From Wikipedia, the free encyclopedia
Jump to: navigation, search
1. Tooth 2. Enamel 3. Dentin 4. Dental pulp ::5. cameral pulp ::6. root pulp :7. Cementum :8. Crown ::9. Cusp ::10. Sulcus :11. Neck :12. Root ::13. Furcation ::14. Root apex :::15. Apical foramen 16. Gingival sulcus
17. Periodontium :18. Gingiva: ::19. free or interdental ::20. marginal ::21. alveolar :22. Periodontal ligament :23. Alveolar bone
24. Vessels and nerves: :25. dental :26. periodontal :27. alveolar through alveolar canals
Attribute Matrix for Officers by Field Marshal Helmuth Karl Bernhard von Moltke for Military science / Management science. The bottom line: leave the stupid & lazy alone, DO NOT turn them under any circumstance into stupid & industrious!!!

On problem solvers, that the world does not need[edit]

Man of the year 18xx had a problem: his project was in need of track ballast. So he solved that problem… »The ancient city of Harappa was heavily damaged under British rule, when bricks from the ruins were used as track ballast in the construction of the Lahore-Multan Railway.« from Harappa


  • Die eye only detects light. The Brain only detect nerve impulses, electrical crackles => we perceive nothing as what it really is… all observation (& perception) is theory-laden. Scientific knowledge isn't derived from anything, like all knowledge Template:Wk (i.e. hypothetical, guesswork). Scientific knowledge is TESTED by observation, not derived from it! Scientific theories are testable conjectures.
  • Curse of the modern Abacuses:
  • Grand Ages: Rome, Grand Ages: Medieval, Nobunaga's Ambition, Crusader Kings II, Kalypso Media, Dungeon Keeper
  • Mercator projection =>
  • c't vom 2015-05-16 pp. 140 erklärt HBM hervorragend! »Auf gewöhnlichem Platinenmaterial lassen sich 5000 Leitungen nicht unterbringen, deswegen der Interposer aus Silizium!«
    • 500MHz, DDR, 1024 Leitungen: max 128 GiB/s per chip
  • Sugar: The Bitter Truth: "Robert H. Lustig, MD, UCSF Professor of Pediatrics in the Division of Endocrinology, explores the damage caused by sugary foods. He argues that fructose (too much) and fiber (not enough) appear to be cornerstones of the obesity epidemic through their effects on insulin. Recorded on 05/26/2009. (#16717)"
  • on installing Fedora, do

sudo yum localinstall --nogpgcheck$(rpm -E %fedora).noarch.rpm$(rpm -E %fedora).noarch.rpm sudo dnf install audacious-plugins-freeworld audacious-plugins-freeworld-* vlc

  • archaeologist Ezra Marcus incidentally mentions on UCTV that sea levels in 7500 BC were at least 10 probably even 12m lower then today!!! It rose very rapidly, about 400 BC it was 6m lower then today; that means, that e.g. some Mediterranean shores were maybe 3-4km more seaward; these lanes were probably insufficiently drained and therefore swampy; when sea levels raised, they became salty and today they are sea floor;
    • very important to sieve the cultural deposits
  • 100 BC North Africa, i.e. Carthage, etc., was more or much more wet, cf. Little Ice Age


The GPU executes only shaders! Anything else including Mesa 3D (= FOSS implementation of OpenGL and Vulkan) and SDL is executed on the CPU.
  • Pascal: 64 single-precision shader cores AND 32 double-precision units per SM (streaming multiprocessor) in a GP100; GP100 SM is partitioned into two processing blocks, each having 32 single-precision CUDA Cores, an instruction buffer, a warp scheduler, and two dispatch units. providing a 2:1 ratio of single- to double-precision throughput. Compared to the 3:1 ratio in Kepler GK110 GPUs, this allows Tesla P100 to process FP64 workloads more efficiently. Using FP16 computation improves performance up to 2x compared to FP32 arithmetic, and similarly FP16 data transfers take less time than FP32 or FP64 transfers. The GP100 SM ISA provides new arithmetic operations that can perform two FP16 operations at once on a single-precision CUDA Core, and 32-bit GP100 registers can store two FP16 values. Nvidia Blog
  • OpenGL is a state machine. A single monolithic set of states that control all aspects of the rendering (Bildsynthese) process. The API is used to put the OpenGL driver into various modes. The modes remain in effect until they get changed again. Current color, vertex and buffers array, viewport, depth ranges, rasterization, culling, multi sampling texture modes are set with glEnable and glDisable.
  • In Vulkan there is no huge state machine. Instead Pipelines State Objects (PSOs) are constructed. PSOs are containers that store all the information required for the current rendering. A PSO represents the processing paths that vertices go through on their way to being rendered. PSOs define the stages like Vertex, Tessellation Control, Tessellation Evaluation, Geometry and Fragment and the compiled shaders that are to be used for those stages. PSOs additionally contain information about color blending, the viewport, i.e. the area and the render target to render to, multisampling, i.e. the number of samples to calculate at each pixel on the render target, etc.
    • PSO can also hold information about the dynamic state, i.e. properties of the PSO that are dynamic, i.e. they can be changed independently.
    • Once build and compiled PSOs can be cached or serialized from one execution to another; far more encompassing then OpenGL pre-compiled shaders
  • In OpenGL you issue a list of GL commands to do rendering, but there is no easy way to store these commands for re-use!
  • Vulkan uses Command Buffers. Commands are recorded into a Command Buffer and subsequently submitted to a device queue for execution on the GPU; Command Buffers can be re-used and re-recorded. Recorded commands include such that bind pipelines and descriptor sets, such that draw, such that modify dynamic state, etc.
    • Command Buffers are allocated from Command Pools, which allocate memory for the Command Buffer as it is being recorded. Recording Command Buffers has a big impact on performance: in case they are created during rendering, it is to be considered to use threads to build the command buffers.
  • Shaders access resources such as buffers and images:
    • In OpenGL use glGet_bla to figure out where to set resources like e.g. textures, that some shader will access
    • In Vulkan shader resources are known as resource descriptors, and there are about 12 types supported by Vulkan: Sampler, Uniform Buffer, Storage Buffer, etc.
  • Threading requires synchronization between Command Buffers when they get build. With Vulkan there is also concurrency between the driver and the device and between queues. Vulkan has synchronization primitives:
    • Fences: used to determine the completion of submissions made to queues; after submitting wait on the fence to become available and continue on
    • Semaphores: used to coordinate operations between queues, e.g. marshal ownership of shared data
    • Events: used to gauge progress through a sequence of commands
    • Pipeline, memory and buffer barriers:

Desktop GPUs[edit]

The GPU executes only shaders on its numerous ALUs (also called "cores"). This work needs also be dispatched and scheduled.
  • AMD: 7 chips in 28nm since 2012:
    • 2016: 2 chips in 14nm: Polaris 10, Polaris 11
  • Nvidia: 9 chips in 28nm since 2012: 5 Kepler (GK107, GK208, GK106, GK104, GK110); 4 Maxwell (GM107; GM206, GM204, GM200), +1 chip dedicated to computation: The GK210 __cannot__ be used as GPU it is found only on "K80 GPU Accelerator" PCIe-cards
    • 2016: 4 chips in 16nm since 2016: GP107, GP104, GP106, GP102, +1 chip dedicated to computation: The GP100 __cannot__ be used as GPU!

A part of the price of a graphics card is the cost of the GPU chip. The cost of the GPU chip could be split into design and manufacturing. The cost for manufacturing could be split into wafer and microfabrication. The bigger the share of the cost for the production of the wafer, the bigger the influence of the GPU's die surface on the graphics card end price, the more elegant to produce a relatively smaller chip that can run a high clock speeds. Nvidia has had rather a tendency towards bigger chips, yet their Tesla 1.0 design clocked the shader ALUs at 1.5 GHz, and now again, their Pascal-based GPUs are clocked at 1.5 GHz.

The GP106 (4400 Mio, 200mm²) competes with both the Polaris 10 (5700Mio,232mm²) and the Polaris 11 (3000Mio,123mm²) chips, meaning the GP104 (7200Mio, 297mm²) as well as the GP102 (12,000Mio, 471mm²) have no 14/16nm competition from AMD.

Pascal Maximum Digital Resolution: 7680x4320@60Hz (7680x4320 at 60Hz RGB 8-bit with dual DisplayPort connectors or 7680x4320 at 60Hz YUV420 8-bit with one DisplayPort 1.3 connector.) Maximum Digital Resolution: DP 1.4, HDMI 2.0b, Dual Link-DVI

Model Launch Release Price (US-$) TDP (watts) API support (version) Chip Core config1 Clock rate Memory Configuration Fillrate Processing Power (GFLOPS)4
Direct3D OpenGL OpenCL Vulkan Arch Name Transistors (Million) Die size (mm²) Base (MHz) Boost (MHz) Amount (GiB) Bus width (bit) DRAM type Memory (MT/s) Bandwidth (GB/s) Pixel (GP/s)2 Texture (GT/s)3 Single Precision Double Precision
8800 GTS 512 2007-12-11 $380 135W 10.0 3.3 1.1 no Telsa 1.0 G92-400 (65nm) 754 324 128:64:16 650
N/A 0.5 256 GDDR3 1940 62.1 10.4 41.6 416 N/A
GTX 285 2009-01-15 $ 204W 10.1 Telsa 2.0 GT200 (55nm) 1400 470 240:80:32 648
N/A 1 512 2484 159.0 20.7 51.84 708.5 N/A
GTX 480 2010-03-26 $500 250W 12.0 (11_0) 4.5 1.2 Fermi GF100 (40nm) 3000 529 480:60:48 700
N/A 1.5 384 GDDR5 3696 177.4 33.6 42 1344.96 168.12
GTX 650 Ti 2012-09-09 $150 110W 1.02 Kepler GK106 2540 221 768:64:16 928 928 1
128 5400 86.4 14.8 59.4 1425.41 59.39
GTX 680 2012-03-22 $500 195W GK104 3540 294 1536:128:32 1006 1058 2
256 6008 192.0 31.4 94.1 2258 94.1
GTX 770 2013-05-30 $400 230W 1536:128:32 1046 1085 2
256 7010 224 33.5 134 3213 134
GTX 780 2013-05-23 $650 250W GK110 7080 561 2304:192:48 863 900 3 384 6008 288 41.4 166 3977 166
GTX 780 Ti 2013-11-07 $700 2880:240:48 876 928 3 7000 336 42.0 210 5046 210
GTX 950 2015-08-20 $160 90W 12.0 (12_1)1 Maxwell 2.0 GM206 2940 227 768:48:32 1024 1188 2
128 6610 106 32.7 49.2 1572 49.1
GTX 960 2015-01-22 $200 120W 1024:64:32 1127 1178 2
7010 112 39.3 72.1 2308 72.1
GTX 970 2014-09-18 $330 145W GM204 5200 398 1664:104:56 1050 1178 3.5+0.5 196+28 192+32 54.6 109.2 3494 109
GTX 980 $550 165W 2048:128:64 1126 1216 4 256 224 72.1 144 4612 144
GTX 980 Ti 2015-06-02 $649 250W GM200 8000 601 2816:176:96 1000 1076 6 384 336 96 176 5632 176
GTX Titan X 2015-03-17 $1000 3072:192:96 1089 12 192 6144 192
GTX 1050 2016-10-?? $110 75W Pascal GP107 3300 132 640:40:32 1354 1455 2 128 7000 112 42.1 84.2 1800  ?
GTX 1050 Ti 2016-10-?? $140 768:64:32 1290 1392 4 42.1 84.2 2100  ?
GTX 1060 3 2016-09-?? $200 120W GP106 4400 200 1152:72:48 1506 1708 3 192 8000 180 72.3 108.4 3470 108
GTX 1060 6 2016-07-19 $250 1280:80:48 6 120.5 3855 120
GTX 1070 2016-06-10 $380 150W GP104 7200 297 1920:120:64 1683 8 256 256 96.4 180.7 5783 181
GTX 1080 2016-05-27 $600 180W 2560:160:64 1607 1733 GDDR5X 10240 320 102.8 257.1 8228 257
GTX 1080 Ti TBA TBA 250W GP102 12,000 471 TBA 384 480
Titan X 2016-08-02 $1200 3584:224:96 1417 1531 12 480 136 317.4 10157 317
??? 16
4096 HBM2 1000 760

1 Available on Microsoft Windows 10 and the Xbox One.
2 Available on Microsoft Windows 7–10, Linux and Android 7 Nougat; Maybe available on the PlayStation 4

Model Launch Release Price (US-$) TDP (watts) API support (version) Chip Core config1 Clock rate Memory configuration Fillrate Processing Power
Direct3D OpenGL OpenCL Vulkan Arch Name Transistors (Million) Die Size (mm2) Core (MHz) Boost (MHz) Memory (MT/s) Amount (GiB) Bus width (bit) DRAM type Bandwidth (GB/s) Pixel (GP/s)2 Texture (GT/s)3 Single Precision Double Precision
HD 7730 2013-04-?? $60 47W 12.0 (11_1) 4.5 1.2 1.0 GCN 1st gen Cape Verde LE 1500 123 384:24:8 800 1125 1 128 GDDR3
6.4 19.2 614.4 38.4
HD 7750 2012-02-15 $110 55W Cape Verde PRO 512:32:16 800
HD 7770 2012-02-15 $160 80W Cape Verde XT 640:40:16 1000 1125 1
GDDR5 72 16 40 1280 80
HD 7850 2012-03-19 $250 130W Pitcairn PRO 2800 212 1024:64:32 860 1200 1
256 153.6 27.52 55.04 1761.28 110.08
HD 7870 2012-03-19 $350 175W Pitcairn XT 1280:80:32 1000 1200 2 153.6 32 80 2560 160
HD 7870 XT 2012-11-19 $270 185W Tahiti LE 4313 352 1536:96:32 925 975 1500 2 192.0 29.6 88.8 2841.6
HD 7950 2012-01-31 $450 200W Tahiti PRO 1792:112:32 800 1250 3 384 240 25.6 89.6 2867.2 717
HD 7970 2012-01-09 $550 250W Tahiti XT 2048:128:32 925 1375 3
264 29.6 118.4 3788.8 947.2
HD 7790 2013-03-22 $150 85W 12.0 (12_0) 2.1 GCN 2nd gen Bonaire XT 2080 160 896:56:16 1000 1500 1
128 96 16.0 56.0 1792 128
R9 290 2013-11-05 $400 250W Hawaii PRO 6200 438 2560:160:64 947 N/A 5000 4 512 320 60 152 4848.6 606.1
R9 290X 2013-10-24 $550 Hawaii XT 2816:176:64 1000 N/A 5000 4
64 176 5632 704
R9 285 2014-09-02 $250 190W GCN 3rd gen Tonga PRO 5000 359 1792:112:32 918 N/A 5500 2 256 176 29.4 102.8 3290 206.6
R9 380X 2015-11-19 $230 Tonga XT 2048:128:32 970 N/A 5700 4 182.4 31 124.2 3973.1 248.3
R9 Fury 2015-07-14 $550 275W Fiji Pro 8900 596 3584:224:64 1000 N/A 1000 4 4096 HBM1 512 64 224 7168 448
R9 Nano 2015-08-27 $650 175W Fiji XT 4096:256:64 1000 N/A 64 256 8192 512
R9 Fury X 2015-06-24 $650 275W 4096:256:64 1050 N/A 67.2 268.8 8601.6 537.6
RX 460 2016-08-08 $109 (2GB)
$139 (4GB)
<75W GCN 4th gen Polaris 11 3000 123 896:56:16 1090 1200 7000 2
128 GDDR5 112 17.4 61 1953 122
RX 470 2016-08-04 $179 120W Polaris 10 5700 232 2048:128:32 926 1206 6600 4 256 211 29.6 118.5 3793 237
RX 480 2016-06-29 $199 (4 GB)
$239 (8 GB)
150W 2304:144:32 1120 1266 7000
35.8 161.3 5161 323
TBA 2017 $$$ WWW GCN 5th gen? Vega 18,000 mm² HBM2

1Shader ALUs : Texture Mapping Units : Render Output Units

Linux kernel-based family of operating systems[edit]

While Linux distributos may not have a big interest in a long-term stabel Linux ABI across distributions, any end-user that wishes to purchase proprietary software has. There is Wikipedia article for the x32 ABI.
Highly simplified structure of the Linux kernel: process scheduler (e.g. Completely Fair Scheduler), I/O scheduler, packet scheduler and other subsystems. Missing: cgroups, Linux Namespaces, Linux Security Modules, etc.
  • What a kernel does: the bootloader GNU GRUB does not duplicate kernel functionality: to execute the Linux kernel, it simply copies the binary file to be executed into RAM and then tells the CPU to execute it (thereby ending/destroying it's own instance?). When instead the Linux kernel is asked to execute a program, its own kernel threads keep running in the background. Actually the program could not be executed without the Linux kernel running.

Debian releases[edit]

Version Freeze date Release date Security support until Long Term Support until Packages Linux kernel systemd Mesa 3D GNOME
Old version, no longer supported: 5 "Lenny" look it up 2009-Feb-14 N/A N/A ≈ 23,000 2.6.26? N/A 7.0 2.22
Older version, yet still supported: 6 "Squeeze" look it up 2011-Feb-06 2014-May-31 2016-Feb ≈ 29,000 2.6.32 N/A 7.10 2.30
Older version, yet still supported: 7 "Wheezy" look it up 2013-May-04 2016-Feb 2018-May ≈ 36,000 3.2 N/A 8.0.5 3.4
Current stable version: 8 "Jessie" look it up 2015-Apr-25 2015-May 2020-May ≈ 43,000 3.16 215 10.3.2 3.14
Future release: 9 "Stretch" testing 2017 TBA TBA 4.3 228 11.1 3.20

Unsuccessful software by Canonical[edit]

GNOME installation[edit]

To tell GTK+ where to place the close,minimize,maximize-Buttons in the GtkTitleBar as well as the GtkHeaderBar enter:

  • gsettings set org.gnome.desktop.wm.preferences button-layout 'close,minimize:'

Both gtk-menu-image and gtk-button-images were deprecated and ignored, after that they made them deprecated but not ignored… To enable icons in roll-down-menus enter:

  • gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/ButtonImages': <1>, 'Gtk/MenuImages': <1>}"
  • Debian meta-packages: gnome-core and gnome are bloated. Too keep apt-get autoclean working, you need to manually install each component you really want after uninstalling the meta-packages…

Differences between GNOME and KDE SC[edit]

On the difference between GNOME and KDE SC:

  • KDE builds on top of what's already there, while GNOME is happy to flatten some mountains first.
  • KDE assumes a platform and attempts to work around its shortcomings. GNOME helps define the platform and works on fixing its shortcomings.

Differences between GTK and KDE Frameworks 5[edit]

Toronto GTK+ hackfest in June 2016[edit]

As can be seen in the articles KDE_Frameworks_5#History and KDE_Software_Compilation#Release_cycle

  • KDE developers first release 5.0, and then guarantee API and ABI stability for this entire 5.x release cycle.
  • in the past GTK developers took the same approach: first release GTK 2.0, then guarantee API and ABI stability, for the entire 2.x release cycle.
    • As explained by Benjamin Otte in this GUADEC'13 video, GTK developers experienced a very serious development delay with this approach. During GTK 3.x it turned out to be complicated to impossible to develop the toolkit further and add the requested features while not being allowed to break API. Thus during the development of GTK 3.x, there were regular API breaks.
    • At the 2016 GTK hackfest in Toronto it was discussed to make this new approach official: blog post 1, blog post 2
    • GTK 4.0 will not be stable, but instead GTK 3.26 (equals to 14 releases during 7 years of development) and GTK 4.6 (equals to 4 released during 2 years of development)
    • this is what the GTK 3.x development cycle has been doing anyway, but now it is official, and developers won't even try to keep the API stable but focus entirely on development and it is planed to release a stable version, which non-GNOME application developers can target, every 2 years.
GTK+ developer blog from 2016-Sep-01[edit]

Update as of 2016-Sep-01:

  • last GTK+ 3.x release: GTK+ 3.22 (autumn 2016) will be the last 3.x release
    • GTK+ 3.22 will receive bug fixes for at least 3 years
    • maintenance after this point may continue, depending on the amount of volunteer resources available
    • distributors of operating systems with long term support release cycles that extend past three years may want to contact the GTK team to establish a policy for back-ports
    • GTK+ Scene Graph Kit has not been integrated into 3.22
  • GTK+ 4.0 development series: following 3.22 will not be 4.0 but instead 3.90, 3.92, … => meaning that the entire GTK+ resources flow into the development of 3.90, 3.92, etc. This development will culminate in the 4.0 release. And with the 4.0 release the resources will be a split into:
  • development series: actual development of 4.90, 4.92, 4.94, … with 5.0 as goal
    • every six months a new even development version will be released
    • new major versions will be released once new features have stabilized, which is expected to be roughly every 2-3 years
    • When bumping to a new major version deprecated API will be removed!
    • Alongside these stable series, GTK+ development will continue in semi-stable development series. These development releases will contain some API changes between minor versions (say between 3.90 and 3.92), although changes will be limited wherever possible. This is the path that we expect GNOME applications to take, but other application developers may choose this option if they want access to the latest features, at the cost of some potential porting work for each minor release.
    • While the GTK+ team reserves the right to change API during development series, this does not mean that the whole GTK+ API will constantly break each release; only specific, and hopefully rarely used parts of the API may change, and if the changes are too extensive they will very likely be delayed to the next major development cycle. We’ll ensure that these changes are well-communicated in advance.
  • stable series: consecutive releases of GTK 4.2, 4.4, 4.6, 4.8, … with no specified development goal
    • whereas previously minor releases were published every six months, now they will be made as and when necessary
    •  ! all updates within long-term stable series will be ABI stable !
    • new minor releases may introduce new widgets, or update the implementation of windowing system protocols in the GDK back-ends, but no additional features or theme changes will be allowed

Changes to the Toronto guidelines:

  • development will be named x.9y instead of x.y;
  • some resources will go into producing a "stable series"

It helps to risk a peek at the GTK+ Roadmap. The move away from X11 and the targeting of touchscreens simply requires a certain set of changes. These have to be tackled by the available manpower. Additionally there was Cairo and other stuff. It was certainly more easy to do Clutter, than it will be to integrate Clutter with GTK+. GTK+ Scene Graph Kit proves this.

Me (SoctXW) has created and populated Category:Software that uses GTK+. In comparison to Qt much more – quite mature – software that adopted the GTK+ toolkit has been abandoned. Subsurface originally opted for GTK+, then switched to Qt. The authors (Linus Torvalds and Dirk Hohndel) bothered to explain their motivation.

GNOME Office[edit]

GNOME Office, in contrast to the Calligra Suite or LibreOffice, was never designed from scratch by any one team. Instead, it consist of applications, which were authored by independent individuals and have been developed by an increasing number of volunteers and GNOME developers.

GNOME Chemistry Utils[edit]

The GNOME Chemistry Utils: GChemPaint, GChemCalc, GChem3D, GCrystal, GSpectrum and GChemTable.

Retrieved from GNOME article older version

GNOME Chemistry Utils comprises some programs and a library containing Gtk+ widgets and some C++ classes related to chemistry. Their homepage is here: As of January 2016 they all use GTK 2.x, and maybe people will bother to port them to GTK 3.20 or newer.

  • GChemPaint, a 2D chemical editor
  • GChemCalc, a chemical calculator
  • GChem3D, a molecular structure viewer
  • GCrystal, a crystal structure viewer and editor
  • GSpectrum, a simple spectrum viewer
  • GChemTable, a periodic table of the elements
  • EasyChem, a program to draw high-quality molecules and 2D chemical formulas site
  • Ghemical, a computational chemistry software package

GNOME Chemistry Utils further comprises widgets not in libgtk: a periodic table of the elements (/GtkPeriodic and /GtkComboPeriodic), a crystal structure viewer (/GtkCrystalViewer) and a molecular structure viewer (/GtkChem3DViewer).

  • See KDE's Kalzium for off-line working or Periodic table in Wikipedia for on-line working. In case you wish some animation (change over time) instead of colors regarding timepoint of isolation maybe search YouTube. Or info regarding crystal system, [magnetism]], etc.

Software development[edit]

  •  »Sounds good ... when can we start using it?«  – anybody
  •  »A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.«  – Antoine de Saint-Exupéry
  •  »Good designs arise only from evolutionary, exploratory interaction between one (or at most a small handful of) exceptionally able designer(s) and an active user population.« – unknown
  •  »Nine women can't make a baby in one month.« or »Adding man-power to a late project makes it later« – Brooks's law see his book "The Mythical Man-Month"
  • most FOSS projects are do-o-cracies, the person who does decides
    • Upstream should always be the driving force forwards thus carrying the most modern code as well as being the decisive factor when it's time to obsolete things from their code base
    • Downstream should carry the burden of maintaining legacy code, if they choose to stick with it
  • We fix things where they are broken, never tape over them!
  •  »Mozilla Corporation isn't a company that's trying to win the market. It's a community that's trying to change the world.« – Richard Newman, here ... by holding a certain market share, because if people don't actively use Firefox, they obviously do not care about the world changing stuff
  • From 2014 onward, "we" can push for more FOSS for proprietary walled gardens (cf. e.g. Category:Windows-only free software) or "we" rather push for an FOSS and open platform operating system, i.e. Linux API, OpenGL, Simple DirectMedia Layer, Wayland + XWayland, KDE Plasma 5 / GNOME Shell / Cinnamon.
    • Having some key software running on the walled gardens as well, is of course good, e.g. VLC media player, Firefox, Subsurface, etc. But is there a point in porting every software?
    • Looking at the history of Microsoft involving themselves in avoiding the growing of market share/installed base of competing products (operating systems, office suites), maybe it is about time to concentrate more on developing and establishing "Linux", as a free and open-source AND open platform for FOSS and for proprietary software. Looking at Apple's successful digital distribution software and how they forbid GPL'ed software in it...
    • Programming Linux-only would create unique selling propositions for this platform, and while such may be regarded as "rude" and "impolite" towards other free and open-source operating systems, it should be decided on the technical merits. Comparing the Linux kernel–user space API with other such APIs, does it offer advantages to the programmer? For example netsniff-ng, Weston and systemd are Linux-only software, because their authors preferred the "Linux kernel–user space API" over POSIX/UNIX because of the technical advantages.
  • Approaches to writing software:
    • "write software": from top to bottom, an algorithm with some IF-statements; ideal for small programs to be written by a single person scratching an own itch
    • "build software": like assembling building blocks; combine black-box subsystems written by different individuals with one another;
      • the specifications must have been explicit about what functionality each subsystems must have; yet it sill happens that author of subsystem A assumed some function will be in subsystem B and not in A
      • the interfaces between the black-box-subsystems are not perfect;
      • subsystems are like black-boxes because even though the source code is available, the author may not be, so until somebody else has worked himself though the source code of that subsystems it is factually a black-box for everybody else, especially for the team assembling the end-system! They HAVE TO rely on the specs being aboded by. Even though the author is available, in case something does not work as specified (or intended?), there needs to be communication with that author without further misunderstanding.
    • "let software grow": start with the main loop, and implement subsystems one after the other, do take missing subsystems into consideration by stubbing them out. That idea behind this approach is the possibility to test immediately in concert. Test while the system grows, instead of not until all the subsystems are ready. What this approach does is to minimize the possible amount of bugs introduced with each new LoC. The early tests show bugs early and makes them easier to find. Now because software IS complex, it is of course still possible that something new interacts in a faulty way with code written early. Depending of how well subsystems are isolated from one another, and of the sequence the subsystems are added to the main loop, this becomes less likely. This approach is not possible when using only already written subsystems.
      • Testing subsystems independently does not reveal any of the bugs or missing functionality that only make themselves noticeable when all (are supposed to) work in concert.
  • source code in high-level language pretty much represents the intention of its human author; given a high enough amount of source-code and enough individual authors, assembling a new software from such subsystems is already quite demanding. To make things really complicated, this all has to be compiled into machine code, then executed on some computer in the context of some operating system.


  • Idiocracy-style advertisement like for Tarrlytons/Tarrlytons won't do much good to Linux
  • Zapp Brannigan: "... then for all I cared they could sit around the whole day drinking beer in their underpants"
  • NASA-guy: ".. we got to find a way to make this fit into the hole for this, using nothing else but that" in Apollo 13
  • In case you want to know what a producer is responsible for, watch Wag the Dog; no, there is no Oscar for producing...



Android – market share[edit]

Android market share on smartphones

VLC media player[edit]

VLC media player's default keyboard shortcuts (that can all be reconfigured):

  • Cycle through audio tracks: b
  • Cycle through subtitle tracks: v
  • Next frame: e
  • Jump 3 seconds: ⇧ Shift+ and ⇧ Shift+
  • Jump 10 seconds: Alt+ and Alt+
  • Jump 60 seconds: Ctrl+ and Ctrl+
  • Jump 120 seconds: Alt+⇧ Shift+ and Alt+⇧ Shift+
  • Jump 600 seconds: Ctrl+Alt+ and Ctrl+Alt+

VLC media player is not based on GStreamer, VLC media player has some problems with ogv-file format when jumping wildly through the file. What useful key-bindings does GNOME Videos offer? Maybe prefer Snappy over it. Clutter+GStreamer+minimum amount of own code

GStreamer confusion and howto deal with multimedia files in general[edit]

Question: In what use cases is the usage of GStreamer NOT overkill?
A still very simple example of a GStreamer pipleine.

Both authors I read, Fred Brooks and Andrew Tanenbaum, stressed how superior a certain approach to software is: one distinct application per "task". The problem is the definition of "task". A widespread definition seems to be: "deal with multimedia files (play, edit, tag, manage, etc.) regardless where they are located". With my knowledge I have arrived at a different definition:

  • manage any kind of file: use directory structure of file system and avoid the brtfs-feature "multiple-volumes" (multiple because I haven't required this so far and the complexity overwhelms me), use file browser and GNU tools (cp, mv, etc.) => no additional file database
  • in case I need to store files remotely, I prefer setting up a solution employing the Network File System protocol or the Server Message Block protocol (what would I need WebDAV for?)
  • I prefer one distinct application

As far as I can see, GStreamer is absolute overkill for the above use cases. Not until trying out gst-launch did I truly understand the idea behing GStreamer:

  • gst−launch filesrc location=music.ogg ! vorbisfile ! alsasink depicts the overkill, because it would be pointless to write the entire GStreamer framework for such simple use cases!!!!

Connect some USB video camera (and a microphone to a USB sound card) to some cheap Raspberry Pi-like computer, run some Linux distribution on it. For the task of "getting the video and the audio stream in real-time to some other computer" GStreamer and the RT protocol provide a simple solution:

  • On the transmittergst-launch udpsrc port=5000 ! application/x-rtp, clock-rate=90000,payload=96 ! rtph263pdepay queue-delay=0 ! ffdec_h263 ! xvimagesink
  • On the receiver gst-launch v4l2src ! video/x-raw-yuv,width=128,height=96,format='(fourcc)'UYVY ! ffmpegcolorspace ! ffenc_h263 ! video/x-h263 ! rtph263ppay pt=96 ! udpsink host= port=5000 sync=false

I don't even like PulseAudio, because my sound card, DOES HAVE a hardware mixer. Sadly the device driver for Linux, does not support that functionality at all, not to mention handling this hardware mixer, like handling PulseAudio (which consumes CPU time and does lag sometimes behind). See e.g. paprefs for something graphical. While AMD TrueAudio sounds like a good idea (an audio acceleration DSP), it is not documented, unsupported under Linux, and relies on a additional sound card/sound codec.


  • GObject and libgflow: abstract representation of a data flow
  • GTK+ and libgtkflow: graphical representation of a data flow

Debian – configuration beyond my competence and understanding[edit]

OS start-up 1: "system services" Why bother to create and delete symlinks manually? Use sysv-rc-conf
OS start-up 2: "session services" How to elegantly configure your session?

To deal with more complex situations, a configuration must be complex itself. Is it possible to either hide away some of that complexity, or to rather adopt a solution, that does not cover complex situations and and is therefore simple and plain? As long as blindly fol­low­ing on-line guides works…

A simple situation is a single user using Inkscape/etc work on his desktop computer. In case fast-user switching goes hand in hand with a sane plumbing layer, so be it. Other then that, fast-user switching is no priority here.

Most Linux distributions are far beyond the understanding and competence of most private end-users… Examples:

  • GNU GRUB's /boot/grub/grub.cfg shall not be edited directly, because it is replaced in case of some kernel-update. Being already confusing itself, the user is forced to edit files in /etc/grub.d instead. Well, while I am able to edit grub.cfg to change e.g. the back-ground image, I am sadly to stupid to achieve this by editing some file in /etc/grub.d => no customizing GRUB for me, e.g. add amdgpu.powerplay=1 or nouveau.pstate=1
    • Why is that? In this case, how else to solve the given problem? Maybe GRUB3 will be able to deal with that without having to rely on shell scripts parsing shell scripts.
    • Additionally and in general terms, because Debian does not explicitly address the simple (and less competent) end-user installing Debian on his desktop computer. Debian is regularly and on a broad bases installed on HTTP servers and maintained by seasoned computer administrators… these setups require more complicated settings and don't care about the added complexity.
  • systemd's three-level configuration: it was implemented that way, to support even complicated and unusual setups. For the not-so-typical Linux desktop end-user, this ads serious and – for him – totally unnecessary complexity to the basic configuration of his operating system. What's wrong with systemd being that way? Absolutely nothing! It is the Linux distribution that could address this "bloated complexity for the simple desktop end-user problem".
  • configuring your network interfaces: /etc/network/interfaces vs. systemd-networkd vs. NetworkManager vs. ConnectivityManager vs. ConnMan:
    • NetworkManager is meant for your mobile computer (laptop) to deal with WLAN
    • systemd-networkd is meant for containers and all sorts of complicated setups
    • /etc/network/interfaces is meant for the typical stationary computer: as simple as possible, reliable and strait forward.
  • /etc/crontab vs. /etc/cron.d/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.monthly/ /etc/cron.weekly/
  • /etc/fstab vs. udisks vs. systemd-mountd
  • using iptables directly in some shell script vs. using all sorts of wrappers
  • sysv-rc-conf gives you an overview over ALL daemons/services started by init over all run-levels!! I am missing such a simple tool for systemd.

Why abandon working solutions?

  1. Because the replacement solution is better for YOU!
  2. Because YOU want to play the guinea pig for the new solution, though it does not suit you!
  3. Because YOU want to obsolete your acquired and readily available knowledge, in favor of the new solution…

Conclusion: To be able to handle the operating system running on the desktop/laptop computer, it may prove much more productive for the typical office/home computer user to learn this, by bothering with Linux From Scratch or Arch Linux instead of starting to learn the – from his perspective totally bloated – Debian configuration.

Why use GIMP when Tux Paint would suffice?

Buildroot vs. Yocto[edit]

  • The "Deciding between Buildroot & Yocto" article on from April 6, 2016 by Nathan Willis explains the differences between Buildroot and Yocto Project; Buildroot is simply to understand, there is only one file where ALL the configuration goes, and therefore adding support for a new platform requires a lot of copy-paste work; Yocto stores configuration into multiple files, therefore variations can be build with little additional work. The disadvantage of this is, that one has to learn a lot, one has to know all the files where information is stored, all their variations.

The fact that I use Debian on a workstation (a desktop computer) makes me dislike the fact, that Debian primarily targets servers and also takes cloud-stuff into account when designing the configuration system. The possible permutation of configurations on such systems thwarts any efforts to keep configuration idiot simple.

Maybe a third iteration of GNU GRUB will do replace shell script with some ini-files, that do not parse but simply declare: I want this background image, this font, this font-color, etc. systemd introduces exactly that, but instead of configuring my network interfaces in one [ documented] file /etc/network/interfaces there are 3 times 3 files. This is the Yocto-way and makes it less type work to configure some fancy containers and stuff but at the cost of being more complicated. Naming the network interfaces "blue dog shit" is another fancy thing for such container and cloud stuff, but it drives me mad because it replaced the well-know eth0 with blue dog shit. A quick ifconfig eth0 may therefore FAIL on Debian because what used to be named eth0 is now being named enp4s0. What causes the brain-damage in systemd/Debian land?

I don't even require NetworkManager for my single static Ethernet connection, since its actual role was to deal with 801.11.

Differences of opinion[edit]

Human-machine interfaces: puny human always interacts with some kind of hardware. Different ideas and notion characterize the software implementation of the support for different types periphery.

Despite being full of marketing horse shit up to the point where something is being explained from the view point of some marketing guy, I came upon something I perceive as a serious problem when looking up Wikipedia articles around computer terms, e.g.

A computer file is en entity that is part of a file system. Nothing else. The notion of a computer file was created by the way we store data on persistent storage devices. To further comprehend the terms "directory", "file name", "file format", "file attribute", I would leave the abstraction layer and explain them on the basis of a concrete file system: e.g. ext4.

  • Question_1: How is my data stored on my hard disc?
  • Question_2: How do I interact with my data?

A "Command-line interface" is a kind/type of Human-machine interface, others being e.g. GUIs, TUIs, Voice-command interfaces, …

  • Is the interface of a "command-line interpreter", e.g. bash, csh, …
  • Is the interface offered/provided by the "command-line interpreter" to the computer user sitting either at the computer keyboard in front of the computer screen or sitting in front of some teletypewriter ;-)
  • deterministic feature no1: the notion of files (One deterministic feature of a GUI could be the the notion of icons (cf. WIMP paradigm.)
    • most common use case is to call upon (i.e. execute) individual programs that are available as individual files by typing their file-name maybe augmented with some command-line options and pressing ↵ Enter.
    • To facilitate this calling upon programs available as executable files, ext2/3/4 marks "computer files" (please see my own definition above) as executable by setting a flag, the interpreters interprets the $PATH-variable where (in which directories) to search for files with the given file-name to be executed.
    • When some program is said to have a command-line interface, this usually means, that is it meant to be executed via the command-line interpreter usually involving ample command-line options. It could also mean, that the program itself, when being executed, offers the user a CLI, though this is rather seldom the case.
  • deterministic feature no2: it interprets entire lines, i.e. the user enters a lot of characters (via computer keyboard or via teletypewriter), then type ↵ Enter to make the interpreter ingest, interpret and execute the entire line.
    • NOTE: A different behavior is thinkable, e.g. when each single character was interpreted immediately, making entering an entire "line" impossible. A "line" is always ended by a press of ↵ Enter, this means it can actually comprise multiple screen lines. How many characters a screen line and how many lines a screen contains depends on the "screen mode"/"video mode". Widespread are e.g. 80 chars/line and 40 lines per screen. In a script file for bash, Newline is interpreted as ↵ Enter key press unless there is also a \\ (double backslash) at the end of that line.
  • Usually there is some kind of scripting language understood by the interpreter, e.g. "shell script" (NOTE: "shell script" can refer to a text-file containing a script written in shell script, or it refers to the scripting language understood by bash and consorts, "power shell script" being a different language.
  • there is pwd
  • Question: what is the relation between bash, GNOME terminal and the "Linux kernel subsystem", which the Wikipedia calls "Linux console" => The TTY demystified

Webcam = hardware device to be connected over USB, FireWire or similar to a Computer, in contrast oto IP cam, that is connected over Ethernet. The hardware device produces a video (motion picture) stream at a maximum resolution and at a maximum refresh rate. The data can be compressed by an appropriate ASIC and deliver a compressed video stream/signal or transmit uncompressed in RGB or YUV.

The Xilinx Zynq Z-7020 combines a Cortex-A9 dual-core with a FPGA. The ZedBoard contains the Zynq Z-7020 and all the necessary interfaces.[2]

    • video image sensor: CMV12000-2E5C1PA ~ € 1600,–; CMV12000-2E5C1PN ~ € 1900,–
    • ZedBoard ~ $ 475,–

The image data comes rolling out of 64 serial LVDS channels at a maximum rate of 300Mbits/sec per channel. AXIOM (camera)

Audio coding format[edit]

  1. A computer file consists of the actual data and the metadata. The entirety of the metadata is specified solely by the file system they are part of. The metadata is created and handled by file system management software.
  2. The term computer file format refers to the structure of the actual data of a computer file. This structure is specified in a text document called something along the lines of computer file format specification.
    • One could further group multiple computer file formats into computer file types, e.g. text, raster-graphic, vector-graphic, audio, video or "multimedia".
    • One could force denoting the file format in the file name by making the use of file name extensions mandatory.
  3. There are lossless compression algorithms, and lossy ones for video or audio data that take human audio perception (psychoacoustic) into consideration when throwing away data)

That is ALL there is. But way, lets not omit the brain damage that is rampant in the Wikipedia:

  • some people insist on calling audio and video compression algorithms codecs, while sadly some insist that a codec refer only to the implementation of an algorithm and not to the algorithm itself. I feel confused.
  • some people insist on calling computer file formats containers

This brain damage would not be a big deal, if there were solidly written and easily understandable articles on computer file, computer file format and compression algorithm. There ain't. Instead there are articles like:

  • Audio coding format
  • etc.
  • I am not sure how much intelligence the understanding computers™ requires, but Wikipedia has become much about Voodoo and black magic. And rampant *peep*.

Virtual terminal[edit]

Compare the Wikipedia "offerings": Linux console, System console, Virtual console, Virtual terminal, Pseudoterminal, …

One could bother to port that knowledge into the Wikipedia, but why bother? The Wikipedia has become such a shit place to work in, that I see not point besides maybe, so that one does not depend on google or other search engines.

  1. More and more seldom I find "knowledge new and useful to me" in the Wikipedia => no point in contributing back to the community
  2. there is little to no co-operation => since I do most work myself, why bother with other people's rules or opinions?
  3. no only is there little to no co-operation, but instead there is an abundance of something titled "de:Blockwart" in the German Wikipedia, denomination not by me, but attitude, horizon fit quite well
  4. I am against giving up my identity, I prefer to contribute anonymously; in case we were forced to work non-anonymously, who would loose more badly? People like me, or people like the "blockwart"? I wonder how much better the climate would become, in case we were all forced to work under our real-life identifications… Anyway, Idiocracy teaches us to "lead, follow or get out of the way"? What is there not to understand?


The idea behind D-Bus, a daemon doing inter-process communication (IPC) and remote procedure call (RPC) seems very counter-intuitive! Even a microkernel keeps IPC to itself. As a file is en entity of an file system, an abstraction, a process is an entity of some operating system kernel. When working on kdbus, a project aimed at porting a substantial amount of D-Bus into the Linux kernel, while keeping some parts of it in user-space, Lennart Poettering pointed out, that most kernels/OSes have been design from ground up around IPC.

Put it into Talk:D-Bus#Article_improvements:_main_D-Bus_concepts.2Fides.2Frationale.

cf. The Linux Programming Interface by Michael Kerrisk!

Linux kernel Virtual File System[edit]

Linux kernel Virtual File System is a subsystem or layer inside of the Linux kernel. It is the result of the very serious attempt to integrate multiple file systems into an orderly single structure. The key idea - it dates back to the pioneering work done by Sun Microsystems employees in 1986. [3] - is to abstract out that part of the file system that is common to all file systems and put that code in a separate layer that calls the underlying concrete file systems to actually manage the data.

» All system calls related to files (or pseudo files!) are directed to the Linux kernel Virtual File System for initial processing. These calls, coming from user processes, are the standard POSIX calls, such as open, read, write, lseek, … .«

udisks2 vs storaged[edit]

file systems are managed by the Linux kernel. udev, networkmanager, udisks, etc are there to manage hot-plugging in a convenient way.

Fedora 25 is going to replace udisks2 (cf. GVfs, udisks) with storaged:

That means more "enterprise features" in my desktop operating system. Adding much more complexity to it. For persons who think they are required to understand their operating system, this means: learn even more about stuff, that is absolutely superfluous in your desktop computer.


Resolution @ display refresh rate DisplayPort 1.4 1.3 1.2
7.680 × 4.320 (8K) @ 60 Hz @ HDR
3.840 × 2.160 (4K) @ 120 Hz @ HDR
7.680 × 4.320 (8K) @ 60 Hz
5.120 × 2.880 (5K) @ 120 Hz
5.120 × 2.880 (5K) @ 60 Hz
3.840 × 2.160 (4K) @ 120 Hz
3.840 × 2.160 (4K) @ 60 Hz
Seed processing
Expeller pressing Grinding Mix with other
Sunflower seed Sunflower oil + Press cake Sunflower seed paste Halva
Sesame seed Sesame oil Sesame seed paste Halva
Hazelnut Hazelnut oil Hazelnut flour
Almond Almond oil Almond flour Marzipan
Walnut Walnut oil Walnut flour
Peanut Peanut oil Sesame paste
Rapeseed Rapeseed oil
Poppy seed Poppyseed oil Poppyseed paste Poppy seed grinder Jupiter 560, in operation.jpg Poppyseed paste + sugar

There is much much room in the Wikipedia for commercial and nationalist brands and only little for basic processing… the result of Idiocracy?

Mobile stuff[edit]

  • iPhone running iOS was initially released on June 29, 2007.
  • Android was initially released September 23, 2008.


History of the Linux graphics stack
early 2D drivers inside of the X server 
posterior indirect rendering over GLX, using Utah GLX-drivers 
Access only through Direct Rendering Manager 
In Linux kernel 3.12 render nodes were merged and the KMS was split off. Wayland implements direct rendering over EGL 
① The evdev module of the Linux kernel gets an event and sends it to the Wayland compositor.
② The Wayland compositor looks through its scenegraph to determine which window should receive the event. The scenegraph corresponds to what's on screen and the Wayland compositor understands the transformations that it may have applied to the elements in the scenegraph. Thus, the Wayland compositor can pick the right window and transform the screen coordinates to window local coordinates, by applying the inverse transformations. The types of transformation that can be applied to a window is only restricted to what the compositor can do, as long as it can compute the inverse transformation for the input events.
③ As in the X case, when the client receives the event, it updates the UI in response. But in the Wayland case, the rendering happens in the client, and the client just sends a request to the compositor to indicate the region that was updated.
④ The en:Wayland compositor collects damage requests from its clients and then re-composites the screen. The compositor can then directly issue an ioctl to schedule a pageflip with KMS.
Linux start-up process, cf. article Linux startup process.

Putting AMD TrueAudio to good use[edit]

Programmable audio effects: The task is to do "ray-tracing" for "sound" instead of light, i.e. to calculate what the sound stage should sound like based on the physical makeup of the scene and the direction the player is currently looking to in REAL-TIME!:

  1. position of the sources of sound (analogue to light!)
  2. direction and angle of the surfaces that the sound bounces of
  3. materials of these surfaces (impacts how sound reverberates off that surface)

That's a complex problem to solve in algorithms and results in computationally very expensive code! Besides ray-tracing for sound, appropriate algorithms have to be added to figure out how the listener (with two ears) would perceive the sound and ship that to the speakers.

Is this what Aureal Semiconductor did 15 years ago with theirs Aureal Vortex 2 ASICs?

  • Player's alter ego is in a room closer to one wall and e.g. reloads his weapon. The player should hear the "click" echo from the closer wall sooner and louder, while from the other side it comes later and more fuzzy. With accuratelly modeled audio effects calculated in real-time, the player would be able to tell where is the wall which is closer and where is the one far from you, even if there is pitch dark, i.e. he gets no visual feedback.

Or imagine you ride on train through the tunnel and echo of the wheels bumping the rails is literally pressing on you, and suddenly the tunnel expands to the large room and the echo is suddenly much more delayed and attenuated.

People claim such accurate audio model was available in Half-Life 1, when played on a PC with Aureal Vortex 2 hardware and headphones.

Higher learning[edit]

Technology quotes from Sid Meyer's Civilization IV: Guilds: »People of the same trade seldom meet together, even for merriment and diversion, but the conversation ends in a conspiracy against the public.« – Adam Smith

  1. ^ "Cmosis CMV12000 product page". 2016-01-19. 
  2. ^ "ZedBoard". 
  3. ^ Kleiman