Source: cirosantilli/articles

= The best articles by Ciro Santilli

These are the best articles ever authored by <Ciro Santilli>, most of them in the format of <Stack Overflow> answers.

Ciro posts update about new articles <Ciro Santilli's Twitter accounts>[on his Twitter accounts].

A chronological list of all articles is also kept at: <updates>{full}.

Some random generally less technical in-tree essays will be present at: <essays by Ciro Santilli>{full}.

* Trended on <Hacker News>:
  * <CIA 2010 covert communication websites> on https://news.ycombinator.com/item?id=36279375[2023-06-11]. 190 points, a mild success.
  * https://github.com/cirosantilli/x86-bare-metal-examples[x86 Bare Metal Examples] on https://news.ycombinator.com/item?id=19428700[2019-03-19]. 513 points. The third time something related to that repo trends. Hacker news people really like that repo!
    * again https://news.ycombinator.com/item?id=27654257[2020-06-27] (https://web.archive.org/web/20210627201918/https://news.ycombinator.com/[archive]). 200 points, repository traffic jumped from 25 daily unique visitors to 4.6k unique visitors on the day
  * https://stackoverflow.com/questions/22054578/how-to-run-a-program-without-an-operating-system/32483545#32483545[How to run a program without an operating system?] on https://news.ycombinator.com/item?id=18531393[2018-11-26] (https://web.archive.org/web/20181126123625/https://news.ycombinator.com[archive]).	394 points. Covers x86 and ARM
  * <elf hello world> on https://news.ycombinator.com/item?id=14359159[2017-05-17] (https://web.archive.org/web/20170517174951/https://news.ycombinator.com/news[archive]). 334 points.
  * <x86 paging> on https://news.ycombinator.com/item?id=13773219[2017-03-02]. Number 1 <Google> search result for "x86 Paging" https://archive.is/VUSNt[in 2017-08]. 142 points.

    \Image[https://raw.githubusercontent.com/cirosantilli/media/master/BIOS_bare_metal_hello_world_running_on_a_Lenovo_ThinkPad_T430.jpg]
    {title=<BIOS> <bare metal> <hello world> running on a <Lenovo> <ThinkPad> T430}
    {height=500}
    {source=https://stackoverflow.com/questions/22054578/how-to-run-a-program-without-an-operating-system/32483545#32483545}
* <x86> <assembly>
  * https://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like/33651438#33651438[What does "multicore" assembly language look like?]
  * https://stackoverflow.com/questions/4584089/what-is-the-function-of-the-push-pop-instructions-used-on-registers-in-x86-ass/33583134#33583134[What is the function of the push / pop instructions used on registers in x86 assembly?] Going down to memory spills, register allocation and graph coloring.
* <Linux kernel>
  * https://unix.stackexchange.com/a/219674/32558[What do the flags in /proc/cpuinfo mean?]
  * https://stackoverflow.com/a/31394861/895245[How does kernel get an executable binary file running under linux?]
  * https://stackoverflow.com/questions/11408041/how-to-debug-the-linux-kernel-with-gdb-and-qemu/33203642#33203642[How to debug the Linux kernel with GDB and QEMU?]
  * https://stackoverflow.com/questions/33852690/can-the-sys-execve-system-call-in-the-linux-kernel-receive-both-absolute-or-re/42290593#42290593[Can the sys_execve() system call in the Linux kernel receive both absolute or relative paths?]
  * https://stackoverflow.com/questions/5957570/what-is-the-difference-between-the-kernel-space-and-the-user-space/44285809#44285809[What is the difference between the kernel space and the user space?]
  * https://stackoverflow.com/questions/5748492/is-there-any-api-for-determining-the-physical-address-from-virtual-address-in-li/45128487#45128487[Is there any API for determining the physical address from virtual address in Linux?]
  * https://stackoverflow.com/questions/2429511/why-do-people-write-the-usr-bin-env-python-shebang-on-the-first-line-of-a-pyt/40938801#40938801[Why do people write the `#!/usr/bin/env` python shebang on the first line of a Python script?]
  * https://askubuntu.com/questions/41930/kernel-panic-not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block0-0/1048477#1048477[How to solve "Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)"?]
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/Path_from_init_main.c_until_bzImage_in_the_Linux_kernel_4.19.jpg]
    {title=Path from init/main.c until bzImage in the <Linux kernel> 4.19}
    {description=From: https://unix.stackexchange.com/questions/5518/what-is-the-difference-between-the-following-kernel-makefile-terms-vmlinux-vml/482978#482978[What is the difference between the following kernel Makefile terms: vmLinux, vmlinuz, vmlinux.bin, zimage & bzimage?]}
    {height=800}
    {source=https://unix.stackexchange.com/questions/5518/what-is-the-difference-between-the-following-kernel-makefile-terms-vmlinux-vml/482978#482978}
  * Single program <Linux distro>
    * https://unix.stackexchange.com/questions/17122/is-it-possible-to-install-the-linux-kernel-alone/200572#200572[Is it possible to install the linux kernel alone?]
    * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/End_of_Linux_boot_log_with_minimal_init_that_prints_FOOBAR.png]
      {description=From: https://unix.stackexchange.com/questions/122717/how-to-create-a-custom-linux-distro-that-runs-just-one-program-and-nothing-else/238579#238579[How to create a custom Linux distro that runs just one program and nothing else?]}
      {height=500}
      {source=https://unix.stackexchange.com/questions/122717/how-to-create-a-custom-linux-distro-that-runs-just-one-program-and-nothing-else/238579#238579}
* <QEMU>
  * https://stackoverflow.com/questions/28315265/how-to-add-a-new-device-in-qemu-source-code/44612957#44612957[How to add a new device in QEMU source code?]
  * https://askubuntu.com/questions/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171[How to generate Ubuntu `debootstrap` disk images for QEMU?]
  * https://stackoverflow.com/questions/10949169/how-to-create-a-multi-partition-sd-image-without-root-privileges/52850819#52850819[How to create a multi partition SD disk image without root privileges?]
  * \Image[https://web.archive.org/web/20230325005127im_/https://i.stack.imgur.com/IPUkA.png]
    {title=<Ubuntu 18.04> running inside <QEMU>}
    {description=From: https://askubuntu.com/questions/884534/how-to-run-ubuntu-desktop-on-qemu/1046792#1046792[How to run Ubuntu desktop on QEMU?]}
    {height=400}
    {source=https://askubuntu.com/questions/884534/how-to-run-ubuntu-desktop-on-qemu/1046792#1046792}
* <gcc> and <Binutils>:
  * https://stackoverflow.com/questions/3322911/what-do-linkers-do/33690144#33690144[How do linkers and address relocation works?]
  * https://stackoverflow.com/questions/29391965/what-is-partial-linking-in-gnu-linker/53959624#53959624[What is incremental linking or partial linking?]
  * https://stackoverflow.com/questions/3476093/replacing-ld-with-gold-any-experience/53921263#53921263[GOLD (`-fuse-ld=gold`) linker vs the traditional GNU ld and LLVM ldd]
  * https://stackoverflow.com/questions/2463150/what-is-the-fpie-option-for-position-independent-executables-in-gcc-and-ld/51308031#51308031[What is the -fPIE option for position-independent executables in GCC and ld?] Concrete examples by running program through <GDB> twice, and an assembly hello world with absolute vs PC relative load.
  * https://stackoverflow.com/a/30308151/895245[How many GCC optimization levels are there?]
  * https://stackoverflow.com/questions/34519521/why-does-gcc-create-a-shared-object-instead-of-an-executable-binary-according-to/55704865#55704865[Why does GCC create a shared object instead of an executable binary according to file?]
* <C (language)>/<C++>: almost all of those fall into "disassemble https://knowyourmeme.com/memes/all-the-things[all the things]" category. Ciro also does "standards dissection" and "a new version of the standard is out" answers, but those are boring:
  * https://stackoverflow.com/questions/572547/what-does-static-mean-in-a-c-program/14339047#14339047[What does "static" mean in a C program?]
  * https://stackoverflow.com/questions/1041866/in-c-source-what-is-the-effect-of-extern-c/30526795#30526795[In C++ source, what is the effect of `extern "C"`?]
  * https://stackoverflow.com/questions/10186765/char-array-vs-char-pointer-in-c/30661089#30661089[Char array vs Char Pointer in C]
  * https://stackoverflow.com/questions/847179/multiple-glibc-libraries-on-a-single-host/52454603#52454603[How to compile glibc from source and use it?]
  * https://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-const-cast-and-reinterpret-cast-be-used/60414256#60414256[When should `static_cast`, `dynamic_cast`, `const_cast` and `reinterpret_cast` be used?]
  * https://stackoverflow.com/questions/31978324/what-exactly-is-stdatomic/58904448#58904448[What exactly is `std::atomic` in C++?]. This answer was originally more appropriately entitled "Let's disassemble some stuff", and got three downvotes, so Ciro changed it to a more professional title, and it started getting upvotes. People judge books by their covers.
  * ``
    notmain.o
    0000000000000000 0000000000000017 W MyTemplate<int>::f(int)
    main.o
    0000000000000000 0000000000000017 W MyTemplate<int>::f(int)
    ``
    {title=`nm` outputs showing that objects are redefined multiple times across files if you don't use template instantiation properly}
    {description=From: https://stackoverflow.com/questions/2351148/explicit-template-instantiation-when-is-it-used/59614755#59614755[What is explicit template instantiation in C++ and when to use it?]}
* <IEEE 754>
  * https://stackoverflow.com/questions/18118408/what-is-difference-between-quiet-nan-and-signaling-nan/55648118#55648118[What is difference between quiet NaN and signaling NaN?]
  * https://stackoverflow.com/questions/2618059/in-java-what-does-nan-mean/55673220#55673220[In Java, what does NaN mean?]
  * ``
    Without subnormals:

              +---+---+-------+---------------+-------------------------------+
    exponent  | ? | 0 |   1   |       2       |               3               |
              +---+---+-------+---------------+-------------------------------+
              |   |   |       |               |                               |
              v   v   v       v               v                               v
              -----------------------------------------------------------------
    floats    *    **** * * * *   *   *   *   *       *       *       *       *
              -----------------------------------------------------------------
              ^   ^   ^       ^               ^                               ^
              |   |   |       |               |                               |
              0   |   2^-126  2^-125          2^-124                          2^-123
                  |
                  2^-127

    With subnormals:

              +-------+-------+---------------+-------------------------------+
    exponent  |   0   |   1   |       2       |               3               |
              +-------+-------+---------------+-------------------------------+
              |       |       |               |                               |
              v       v       v               v                               v
              -----------------------------------------------------------------
    floats    * * * * * * * * *   *   *   *   *       *       *       *       *
              -----------------------------------------------------------------
              ^   ^   ^       ^               ^                               ^
              |   |   |       |               |                               |
              0   |   2^-126  2^-125          2^-124                          2^-123
                  |
                  2^-127
    ``
    {title=Visualization of <#subnormal floating point numbers> vs what <IEEE 754> would look like without them}
    {description=From: https://stackoverflow.com/questions/8341395/what-is-a-subnormal-floating-point-number/53203428#53203428[What is a subnormal floating point number?]}
* <Computer science>
  * <Algorithms>
    * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/C++_Heap_vs_BST_vs_hash_map_insert_time.png]
      {title=Average insertion time into heaps, <binary search tree> and <hash maps> of the <#C++ standard library>}
      {description=From: https://stackoverflow.com/questions/6147242/heap-vs-binary-search-tree-bst/29548834#29548834[Heap vs Binary Search Tree (BST)]}
      {height=1000}
      {source=https://stackoverflow.com/questions/6147242/heap-vs-binary-search-tree-bst/29548834#29548834}
  * https://cs.stackexchange.com/questions/9664/is-it-necessary-for-np-problems-to-be-decision-problems/128702#128702[Is it necessary for NP problems to be decision problems?]
  * https://stackoverflow.com/questions/4317414/polynomial-time-and-exponential-time/68005934#68005934[Polynomial time and exponential time]. Answered focusing on the definition of "exponential time".
  * https://cstheory.stackexchange.com/questions/20978/what-is-the-smallest-turing-machine-where-it-is-unknown-if-it-halts-or-not/53326#53326[What is the smallest Turing machine where it is unknown if it halts or not?]. Answer focusing on "blank tape" initial condition only. Large parts of it are summarizing the <Busy Beaver Challenge>, but some additions were made.
* <Git>
  * ``
      | 0           | 4            | 8           | C              |
      |-------------|--------------|-------------|----------------|
    0 | DIRC        | Version      | File count  | ctime       ...| 0
      | ...         | mtime                      | device         |
    2 | inode       | mode         | UID         | GID            | 2
      | File size   | Entry SHA-1                              ...|
    4 | ...                        | Flags       | Index SHA-1 ...| 4
      | ...                                                       |
    ``
    {title=<ASCII art> depicting the <binary file> format of the <Git> index file}
    {description=From: https://stackoverflow.com/a/25806452/895245[What does the git index contain EXACTLY?]}
  * ``
    tree {tree_sha}
    {parents}
    author {author_name} <{author_email}> {author_date_seconds} {author_date_timezone}
    committer {committer_name} <{committer_email}> {committer_date_seconds} {committer_date_timezone}

    {commit message}
    ``
    {title=Description of the <Git> commit object binary data structure}
    {description=From: https://stackoverflow.com/questions/22968856/what-is-the-file-format-of-a-git-commit-object-data-structure/37438460#37438460[What is the file format of a git commit object data structure?]}
  * https://stackoverflow.com/questions/600079/how-do-i-clone-a-subdirectory-only-of-a-git-repository/52269934#52269934[How do I clone a subdirectory only of a Git repository?]
* <Python>
  * https://stackoverflow.com/a/19950198/895245[What is the difference between old style and new style classes in Python?]
  * https://stackoverflow.com/a/20022860/895245[What is a mixin in Python, and why are they useful?]
  * https://stackoverflow.com/questions/3044580/multiprocessing-vs-threading-python/55319297#55319297[What are the differences between threads and processes in Python?]

    \Image[https://web.archive.org/web/20190607051221if_/https://i.stack.imgur.com/2x04m.png]
    {title=<Python> Threads vs Processes with 8 hyperthreads}
    {height=600}
    {source=https://stackoverflow.com/questions/3044580/multiprocessing-vs-threading-python/55319297#55319297}
* <Web technology>
  * https://stackoverflow.com/a/28380690/895245[What does enctype='multipart/form-data' mean?]
  * <JavaScript>
    * https://stackoverflow.com/a/23877420/895245[How does JavaScript `.prototype` work?]
    * https://stackoverflow.com/a/24595458/895245[What is the difference between `.prop()` vs `.attr()` in JavaScript?]
* <OpenGL>
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/opengl-rotating-triangle-image-magick.gif]
    {title=<OpenGL> rendering output dumped to  a <GIF> file}
    {description=From: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292[How to use GLUT/OpenGL to render to a file?]}
    {source=https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292}
  * \Image[https://upload.wikimedia.org/wikipedia/commons/thumb/6/6b/Texture_Atlas.png/600px-Texture_Atlas.png]
    {title=Example of a texture atlas containing glyphs}
    {description=
    Image by Nicolas P. Rougier, author of <Freetype GL>.

    Used on <Ciro Santilli>'s answer: https://stackoverflow.com/questions/8847899/opengl-how-to-draw-text-using-only-opengl-methods/36065835#36065835[How to draw text using only OpenGL methods?]
    }
    {source=https://en.wikipedia.org/wiki/File:Texture_Atlas.png}
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/OpenGL_glFrustrum_on_left_vs_glOrtho_on_right.png]
    {title=<OpenGL> `glFrustrum` vs `glOrtho`}
    {description=From: https://stackoverflow.com/questions/2571402/how-to-use-glortho-in-opengl/36046924#36046924[How to use `glOrtho()` in OpenGL?]}
    {source=https://stackoverflow.com/questions/2571402/how-to-use-glortho-in-opengl/36046924#36046924}
  * https://stackoverflow.com/questions/17789575/what-are-shaders-in-opengl-and-what-do-we-need-them-for/36211337#36211337[What are shaders in OpenGL?]
  * https://gamedev.stackexchange.com/questions/72044/why-do-we-use-4x4-matrices-to-transform-things-in-3d/118848#118848[Why do we use 4x4 matrices to transform things in 3D?]
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/Sinusoidal_circular_wave_heatmap_generated_with_OpenGL_shader_at_60fps.gif]
    {title=Sinusoidal circular wave heatmap generated with an <OpenGL> shader at 60 FPS on <SDL>}
    {description=
    From: https://stackoverflow.com/questions/30864752/is-it-possible-to-build-a-heatmap-from-point-data-at-60-times-per-second/39839788#39839788[Is it possible to build a heatmap from point data at 60 times per second?]

    Compared <CPU> vs <GPU> shaders.
    }
    {source=https://stackoverflow.com/questions/30864752/is-it-possible-to-build-a-heatmap-from-point-data-at-60-times-per-second/39839788#39839788}
  * https://stackoverflow.com/questions/13693946/image-processing-with-glsl-shaders/40641014#40641014[Image Processing with GLSL shaders?] Compared the <CPU> and GPU for a simple blur algorithm.

    \Image[https://raw.githubusercontent.com/cirosantilli/media/master/Visualization_of_OpenGL_blur_algorithm_from_webcam_with_Ciro_Santilli_waving.gif]
    {source=https://stackoverflow.com/questions/13693946/image-processing-with-glsl-shaders/40641014#40641014}

    \Video[http://youtube.com/watch?v=MRhAljmHq-o]
    {title=<OpenGL> GPU GLSL fragment shader real time v4l2 Linux webcam <computer vision> box blur vs <CPU>}
    {height=500}
* <Node.js>
  * https://stackoverflow.com/a/22004559/895245[What's the difference between dependencies, devDependencies and peerDependencies in npm package.json file?]
* <Ruby on Rails>
  * https://stackoverflow.com/a/25626629/895245[What is the difference between `+<%+`, `+<%=+`, `+<%#+` and `+-%>+` in ERB in Rails?]
* <POSIX>
  * https://stackoverflow.com/questions/1780599/what-is-the-meaning-of-posix/31865755#31865755[What is POSIX?] Huge classified overview of the most important things that POSIX specifies.
* <Systems programming>
  * https://stackoverflow.com/questions/868568/what-do-the-terms-cpu-bound-and-i-o-bound-mean/33510470#33510470[What do the terms "CPU bound" and "I/O bound" mean?]
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/wall,_user,_and_sys_for_CPU-bound_work_with_8_hyperthreads.png]
    {title=Plot of "real", "user" and "sys" mean times of the output of time for <CPU>-bound workload with 8 threads}
    {description=From: https://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1/53937376#53937376[What do 'real', 'user' and 'sys' mean in the output of time?]}
    {height=800}
    {source=https://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1/53937376#53937376}
  * ``
    +--------+                  +------------+       +------+
    | device |>---------------->| function 0 |>----->| BAR0 |
    |        |                  |            |       +------+
    |        |>------------+    |            |
    |        |             |    |            |       +------+
       ...        ...      |    |            |>----->| BAR1 |
    |        |             |    |            |       +------+
    |        |>--------+   |    |            |
    +--------+         |   |         ...        ...    ...
                       |   |    |            |
                       |   |    |            |       +------+
                       |   |    |            |>----->| BAR5 |
                       |   |    +------------+       +------+
                       |   |
                       |   |
                       |   |    +------------+       +------+
                       |   +--->| function 1 |>----->| BAR0 |
                       |        |            |       +------+
                       |        |            |
                       |        |            |       +------+
                       |        |            |>----->| BAR1 |
                       |        |            |       +------+
                       |        |            |
                       |             ...        ...    ...
                       |        |            |
                       |        |            |       +------+
                       |        |            |>----->| BAR5 |
                       |        +------------+       +------+
                       |
                       |
                       |             ...
                       |
                       |
                       |        +------------+       +------+
                       +------->| function 7 |>----->| BAR0 |
                                |            |       +------+
                                |            |
                                |            |       +------+
                                |            |>----->| BAR1 |
                                |            |       +------+
                                |            |
                                     ...        ...    ...
                                |            |
                                |            |       +------+
                                |            |>----->| BAR5 |
                                +------------+       +------+
    ``
    {title=Logical struture <PCIe> device, functions and BARs}
    {description=From: https://stackoverflow.com/questions/30190050/what-is-the-base-address-register-bar-in-pcie/44716618#44716618[What is the Base Address Register (BAR) in PCIe?]}
* <Electronics>
  * <Raspberry Pi>
    * \Image[https://web.archive.org/web/20200809024904im_/https://i.stack.imgur.com/8C0mJ.jpg]
      {title=<Raspberry Pi 2> directly connected to a <laptop> with an <Ethernet cable>}
      {description=Image from answer to: https://stackoverflow.com/questions/16040128/hook-up-raspberry-pi-via-ethernet-to-laptop-without-router/39086537#39086537[How to hook up a Raspberry Pi via Ethernet to a laptop without a router?]}

      \Image[https://web.archive.org/web/20200809024904im_/https://i.stack.imgur.com/L0XyU.jpg]
      {title=<Raspberry Pi 2> connected to a <laptop> with an USB <UART> adapter}
      {description=Image from answer to: https://stackoverflow.com/questions/16040128/hook-up-raspberry-pi-via-ethernet-to-laptop-without-router/39086537#39086537[How to hook up a Raspberry Pi via Ethernet to a laptop without a router?]}

      \Image[https://web.archive.org/web/20210922124515im_/https://i.stack.imgur.com/TqIrP.png]
      {title=<Raspberry Pi OS> being emulated on <QEMU> 2.5.0 on <Ubuntu 16.04> with a modified kernel}
      {description=Image from answer to: https://stackoverflow.com/questions/28880833/how-to-emulate-the-raspberry-pi-2-on-qemu/45814913#45814913[How to emulate the Raspberry Pi 2 on QEMU?]}
      {height=600}

      \Image[https://web.archive.org/web/20201112021056im_/https://i.stack.imgur.com/hztMj.gif]
      {title=Bare metal <LED> blinker program running on a <Raspberry Pi 2>}
      {description=Image from answer to: https://stackoverflow.com/questions/29837892/how-to-run-a-c-program-with-no-os-on-the-raspberry-pi/40063032[How to run a C program with no OS on the Raspberry Pi?]}
* <Computer security>
  * https://security.stackexchange.com/a/72569/53321[Why is the same origin policy so important?]
* Media
  * \Video[http://youtube.com/watch?v=JISozfHATms]
    {title=Canon in D in <C (language)>}
    {description=
    From: https://stackoverflow.com/questions/732699/how-is-audio-represented-with-numbers-in-computers/36510894#36510894[How is audio represented with numbers in computers?].

    The original <Stack Overflow content deletion>[question was deleted, lol]...: https://stackoverflow.com/questions/2205070/programmatically-synthesizing-programming-music/52126471#52126471[How to programmatically synthesize music?]
    }
  * https://stackoverflow.com/questions/12831761/how-to-resize-a-picture-using-ffmpegs-sws-scale/36487785#36487785[How to resize a picture using ffmpeg's sws_scale()?]
  * https://unix.stackexchange.com/questions/256138/is-there-any-decent-speech-recognition-software-for-linux/613392#613392[Is there any decent speech recognition software for Linux?] ran a few examples manually on `vosk-api` and compared to ground truth.
* <Eclipse (IDE)>
  * https://stackoverflow.com/questions/4038760/how-to-set-up-the-eclipse-for-remote-c-debugging-with-gdbserver/45608937#45608937[How to set up the Eclipse for remote C debugging with gdbserver?]
* <Computer hardware>
  * https://www.quora.com/Are-there-good-open-source-standard-cell-libraries-to-learn-IC-synthesis-with-EDA-tools/answer/Ciro-Santilli[Are there good open source standard cell libraries to learn IC synthesis with EDA tools?]
* <Scientific visualization software>
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/VisIt_zoom_in_10_million_straight_line_plot_with_some_marked_points.png]
    {title=VisIt zoom in 10 million straight line plot with some manually marked points}
    {description=From: <Survey of open source interactive plotting software with a 10 million point scatter plot benchmark by Ciro Santilli>{full}}
    {disambiguate=best-articles}
    {height=600}
    {source=https://stackoverflow.com/questions/5854515/large-plot-20-million-samples-gigabytes-of-data/55967461#55967461}
* <Numerical analysis>
  * \Video[http://youtube.com/watch?v=FOwYDlay8rI]
    {title=Real-time <heat equation> <OpenGL> visualization with interactive mouse cursor using relaxation method by <Ciro Santilli> (2016)}
    {height=500}
* <Computational physics>
  * \Image[https://web.archive.org/web/20210225103255im_/https://i.stack.imgur.com/9eVe9.png]
    {title=<gnuplot> plot of the y position of a sphere bouncing on a plane simulated in <Bullet Physics>}
    {description=From: https://stackoverflow.com/questions/11175694/bullet-physics-simplest-collision-example/36987063#36987063[What is the simplest collision example possible in a Bullet Physics simulation?]}
    {disambiguate=articles}
    {height=600}
    {source=https://stackoverflow.com/questions/11175694/bullet-physics-simplest-collision-example/36987063#36987063}
* <Register transfer level> languages like <Verilog> and <VHDL>
  * <Verilog>:
    \Image[https://raw.githubusercontent.com/cirosantilli/media/master/verilog-interactive.gif]
    {title=Interacgive ASDF-controlled demo with core logic written in <Verilog> using <Verilator>}
    {description=
    From: https://stackoverflow.com/questions/38108243/is-it-possible-to-do-interactive-user-input-and-output-simulation-in-vhdl-or-ver/38174654#38174654[Is it possible to do interactive user input and output simulation in VHDL or Verilog?]

    See also: <Verilator interactive example>{full}
    }
    {height=600}
* <Android>
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/Android_AOSP_8.1.0_built_from_source_running_in_QEMU.png]
    {description=From: https://stackoverflow.com/questions/1809774/how-to-compile-the-android-aosp-kernel-and-test-it-with-the-android-emulator/48310014#48310014[How to compile the Android AOSP kernel and test it with the Android Emulator?]}
    {height=600}
    {source=https://stackoverflow.com/questions/1809774/how-to-compile-the-android-aosp-kernel-and-test-it-with-the-android-emulator/48310014#48310014}
  * \Video[https://www.youtube.com/watch?v=fVgeoMYm61Q]
    {title=Android screen showing live on an <Ubuntu> laptop through ADB}
    {description=From: https://android.stackexchange.com/questions/7686/is-there-a-way-to-see-the-devices-screen-live-on-pc-through-adb/154328#154328[How to see the Android screen live on an Ubuntu desktop through ADB?]}
* <Debugging>
  * https://stackoverflow.com/questions/1345670/stack-smashing-detected/51897264#51897264[What is the "Stack smashing detected" error in GCC and how to solve it?]
  * https://stackoverflow.com/questions/7880784/what-is-rss-and-vsz-in-linux-memory-management/57453334#57453334[What is RSS and VSZ in Linux memory management?]
  * https://stackoverflow.com/questions/3899870/print-call-stack-in-c-or-c/54365144#54365144[How to print the call stack in C or C++?]
  * https://stackoverflow.com/questions/6261201/how-to-find-memory-leak-in-a-c-code-project/57877190#57877190[How to find memory leaks in C++ code?]
* <Program optimization>
  * https://stackoverflow.com/questions/310974/what-is-tail-call-optimization/55230417#55230417[What is tail call optimization?]
  * \Image[https://web.archive.org/web/20200229164327if_/https://i.stack.imgur.com/mM8NQ.png]
    {title=gprof2dot image generated from the gprof data of a simple test program}
    {description=
    From: https://stackoverflow.com/questions/375913/how-can-i-profile-c-code-running-on-linux/60265409#60265409[How can I profile C++ code running on Linux?]

    The answer compares gprof, valgrind callgrind, perf and gperftools on a single simple executable.
    }
    {height=600}
    {source=https://stackoverflow.com/questions/375913/how-can-i-profile-c-code-running-on-linux/60265409#60265409}
* Data
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master//Wikipedia_CatTree.png]
    {title=<Mathematics> dump of <Wikipedia CatTree>}
    {disambiguate=articles}
    {height=600}
    {source=https://cirosantilli.com/wikipedia-cattree/Mathematics}
* <Mathematics>
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/Diagram_of_the_fundamental_theorem_on_homomorphisms_with_subtitles.svg]
    {title=Diagram of the <fundamental theorem on homomorphisms> by <Ciro Santilli> (2020)}
    {description=
    Shows the relationship between <group homomorphisms> and <normal subgroups>.

    From: https://math.stackexchange.com/questions/776039/intuition-behind-normal-subgroups/3732426#3732426[What is the intuition behind normal subgroups?]
    }
    {height=800}
  * <Formalization of mathematics>{full}: some early thoughts that could be expanded. Ciro almost had a stroke when he understood this stuff in his teens.
  * \Image[https://upload.wikimedia.org/wikipedia/commons/3/31/DFT_2sin%28t%29_%2B_cos%284t%29_25_points.svg]
    {title=Simple example of the <Discrete Fourier transform>}
    {description=That was missing from <Wikipedia> page: https://en.wikipedia.org/wiki/Discrete_Fourier_transform[]!}
    {height=600}
* <computer network>[Network] programming
  * https://stackoverflow.com/questions/11208299/how-to-make-an-http-get-request-in-c-without-libcurl/35680609#35680609[How to make an HTTP get request in C without libcurl?]
* <Physics>
  * <uranium vs plutonium Quora answer by Ciro Santilli>[What is the difference between plutonium and uranium?]
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/Faster_than_light_implies_time_travel_diagram.svg]
    {title=<Spacetime diagram> illustrating how <faster-than-light> travel implies time travel}
    {description=From: https://physics.stackexchange.com/questions/13001/does-superluminal-travel-imply-travelling-back-in-time/615079#615079[Does faster than light travel imply travelling back in time?]}
    {disambiguate=articles}
    {height=600}
* <Biology>
  * \Image[https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Oxford_Nanopore_MinION_top_cropped.jpg/392px-Oxford_Nanopore_MinION_top_cropped.jpg]
    {title=Top view of an open <Oxford Nanopore MinION>}
    {description=From: <oxford nanopore river bacteria>{full}}
    {disambiguate=articles}
    {height=600}
  * \Image[https://upload.wikimedia.org/wikipedia/commons/5/5f/E._Coli_Whole_Cell_model_by_Covert_Lab_minimal_nutrients_vs_cut_amino_acids_mass_fraction_summary.svg]
    {title=Mass fractions in a <minimal growth medium> vs an <amino acid> cut in a simulation of the <E. Coli Whole Cell Model by Covert Lab>}
    {description=From: <E. Coli Whole Cell Model by Covert Lab>{full}}
    {height=600}
* <Quantum computing>
  * <Quantum computing is just matrix multiplication>{full}
  * \Image[https://raw.githubusercontent.com/cirosantilli/media/master/matplotlib/bloch_sphere_walk.svg]
    {title=Visualization of the continuous deformation of states as we walk around the <Bloch sphere> represented as <photon polarization> arrows}
    {description=From: https://physics.stackexchange.com/questions/204090/understanding-the-bloch-sphere/598254#598254[Understanding the Bloch sphere].}
* <Bitcoin>
  * <Cool data embedded in the Bitcoin blockchain>{full}
* <GIMP>
  * \Image[https://web.archive.org/web/20210321083826if_/https://i.stack.imgur.com/r89lU.png]
    {title=<GIMP> screenshot part of https://graphicdesign.stackexchange.com/questions/83446/gimp-how-to-combine-two-images-side-by-side/145543#145543[how to combine two images side-by-side in GIMP?]}
    {height=600}
* Home DIY
  * \Image[https://upload.wikimedia.org/wikipedia/commons/a/a6/Total_Blackout_Cassette_Roller_Blind_With_Curtains.jpg]
    {title=Total_Blackout_Cassette_Roller_Blind_With_Curtains.}
    {description=From: <Window blackout>{full}}
    {height=600}
* <Ciro Santilli's campaign for freedom of speech in China>[China]
  * https://www.quora.com/What-would-happen-if-I-walked-around-Beijing-with-a-t-shirt-that-said-freedom-of-speech-is-pretty-great[What would happen if I walked around Beijing with a t-shirt that said "freedom of speech is pretty great"?]