Knuth's TAOCP's latest published part, Volume 4 Fascicle 6, on Satisfiability contains a number of visualizations that really are amazing and worth just buying a copy of the book for, just to ponder over these images.
The satisfiability problem of whether there exists an assignment of boolean values that makes a given boolean formula evaluate to TRUE is, IMO, truly a fundamental problem in computer science.
Any piece of code with some inputs and outputs can be transformed into a boolean formula (albeit a huge one). This process feels akin to expressing molecules, from simple ones like H2O, to the highly complex proteins that make up much of our Cells, in their constituent atoms and more importantly the atom interactions.
Knuth (EDIT: Actually, Carsten Sinz) takes this concept one step further and produces visualizations of non-trivial boolean formulas that clearly show the regular, both symmetrical and asymmetrical, sometimes fractal-like nature of these formulas.
In my mind, these visualizations are quite powerful and strikingly show the fundamental building blocks of (digital) computation.
Physical pages 116-117; PDF pages 126-127.
ProTip: Order the 5 vol set directly from Addison-Wesley, it's much cheaper than anywhere else.
The visualizations were done by Carsten Sinz.
This is his paper describing the technique:
Carsten Sinz. Visualizing SAT Instances and Runs of the DPLL Algorithm. J. Automated Reasoning, 39(2):219-243, 2007.
https://www.carstensinz.de/papers/JAR-2007-Visualization.pdf
Edit: Fixed a typo.
What I found particularly striking about them was how much they reminded me of both neurons and larger brain structures, as well as some of those newer, ML-assisted FMRI imagery.
Probably just coincidence and wishful thinking, but it instills a sense of daydream-like wonder all the same.
https://oona.windytan.com/posters/dialup-final.png
from https://www.windytan.com/2012/11/the-sound-of-dialup-picture...
Finally I read a bunch of docs about how to talk to the modem and eventually I managed to do the correct steps and the modem produced its sweet handshake tone and the indicator lights started to blink - it was such a pure joy to finally be online from Linux!
But there are all from company sound design and the same experience as the dial up sound.
I'm actually surprised the link, company, and poster are all still valid/working 10 years later.
Anyway, hearing those tones again did bring back all the feels, the joy of hearing that "boing-boing-Hi" greeting as I stepped once again onto the "Information Superhighway".
Asking because the graphical linux genealogy concept / this illustration have been around for a while, as have JS pan & zoom plugins, and it's totally worth having something like this in that format.[1]
Edit: OK, there is Gadget-ZoomViewer (below), but maybe it doesn't work for SVGs? I don't see the option to open ZoomViewer from the Commons image page for this image.
https://zoomviewer.toolforge.org/index.php?f=Quaternary_Geol...
https://commons.wikimedia.org/wiki/Help:Gadget-ZoomViewer
1. See "Expand" tool here: https://digitalcollections.lib.washington.edu/digital/collec...
[1] https://upload.wikimedia.org/wikipedia/commons/7/74/Timeline...
https://en.wikipedia.org/wiki/Syntax_diagram
They're used at https://json.org/, for example.
— https://vintagecomputer.ca/the-history-of-apples-pascal-synt...
https://inst.eecs.berkeley.edu/~cs61a/sp21/assets/slides/33-...
They're used in the SQLite docs as well, where I think they're really well suited.
Bit of a discussion on how they're created here: https://wiki.tcl-lang.org/page/Generating+Syntax+Diagrams+Us...
SQLITE uses them now as well: https://www.sqlite.org/lang_aggfunc.html
Things like:
GPS: https://ciechanow.ski/gps/
Alpha Compositing: https://ciechanow.ski/alpha-compositing/
Floating Point numbers: https://ciechanow.ski/exposing-floating-point/
It's the sort of interactive educational content that I always imagined computers and the internet would be amazing for, it just never panned out at a large scale.
Maybe not easy enough to create, maybe not profitable enough, who knows.
(direct) https://i.redd.it/e7ltreiv98j71.png
Recently he had done a video about convolution. And his videos about neural networks are pretty good. He has recommendation video for other good channels too.
Great blog on Myers diff series: https://blog.jcoglan.com/2017/02/12/the-myers-diff-algorithm...
Not technical illustrations but, some funny jokes in unix haters handbook is pretty funny. https://web.mit.edu/~simsong/www/ugh.pdf
There is also unix magic poster: https://archive.org/details/unix-magic-poster-gary-overcare-...
Dunno how it is now though.
It created extremely perverse incentives where nobody wanted to help each other or would even go as far as to sabotage other people's work in order to make sure they're not on the bottom. Some managers would hire people with the intent to fire them later.
In the period where Steve Jobs was not CEO it was a lot more like Microsoft with the various geographical divisions e.g. EMEA, AMR in particular having their own fiefdoms and starting wars with each other. And then of course the ridiculous number of skunkworks projects that would compete with other teams.
Every edition features dinosaurs, which totally relate to the concepts of CPU scheduling, IPC, memory management, etc.
The seventh edition is the absolute pinnacle, as the sauropod family on the front cover enjoy a host of electronic devices from the 80's and 90's:
https://i.imgur.com/5U87Pgt.png
Most of the covers are great.
https://pbgalvin.files.wordpress.com/2007/03/scan0001.jpg
A nice touch that got dropped was that the minicomputer and microcomputer OSes were smaller, more evolved beasts.
"The 1981 book School, Work and Play (World of Tomorrow) features this beautiful two-page spread. Apparently, thanks to computers, there's no crime in the future outside of the computerized variety. The "computer criminal" pictured really doesn't appear to be running very fast. Maybe they're playing a game of freeze-tag. Or maybe that policeman's gun has special settings the author didn't tell us about. I like to believe the former, but that's just me."
The book is full of really cool images like that one of "The Future" as seen from '81Hahaha
It's 'safer' as in I think you can claim muggings or burglaries (or losses to these) have reduced because people just don't carry as much cash anymore.
> You don't have to rob me
> It's not really worth it
> I only have credit cards
> And I can just cancel them
> Know that you needed cash
> But what the fuck's up with that?
(DOMi & JD BECK - U DON'T HAVE TO ROB ME)
Online fraud prevention is the most important part of online card processing, and can't be done offline.
It was done offline for decades.
All the world's computers talking to one another is far more recent than credit cards.
Having money with you though is good in emergencies. Carrying a one dollar, five dollar and or a ten / twenty though is always a good idea.
Where did we go so wrong? as to literally remove UX for no benefit
How did you hook your c64 up to an LCD?
https://en.wikipedia.org/wiki/Fourier_series#/media/File:Fou...
The main resource on learning Erlang, https://learnyousomeerlang.com, has a lot of funny ones, some of which are useful.
Illustration of QuickSort and MergeSort as two sides of the same coin: http://lkozma.net/images/sort/duality.pdf
I find this somehow both obvious and counter-intuitive, and usually the two algorithms are not presented in this way, as duals of each other.
I wrote up this view in more detail, but the figure above should be self-explanatory: http://lkozma.net/blog/a-dual-view-of-sorting-algorithms/
First one is [1], by Chiu and Jain (page 7, figure 5), showing that Additive Increase / Multiplicative decrease is the only simple policy that converges among 2 senders (with rates x and y) to a rate that is fair (along the y=x diagonal) and efficient (along the x+y=Bandwidth). This is the basis of the algorithm that made TCP (and the Internet as we know it today) possible.
The other one is this diagram from BBR [2] (from the paper in [3]), that shows how BBR sets the window ("amount in flight") to the bandwidth-delay product (BDP) of the bottleneck link (the "volume" of the pipe in a water analogy). The cool thing is that you can only measure the delay of the link if you window is <= the BDP, and you can only measure the bandwidth if your window is >= the BDP, so the algorithm has to hover around this point to make sure it can determine both.
[1] Chiu and Jain, Analysis of the Increase and Decrease Algorithms for Congestion Avoidance in Computer Networks, 1989, https://www.cse.wustl.edu/~jain/papers/ftp/cong_av.pdf
[2] https://dl.acm.org/cms/attachment/9cf72499-b32d-4426-914b-cd...
[3] BBR: Congestion-Based Congestion Control https://queue.acm.org/detail.cfm?id=3022184
https://en.wikipedia.org/wiki/Sequence_diagram
There's a standardized UML version of this, but I think it's easier to read when the arrows are sloped a little, like in this random example: https://www.graffletopia.com/stencils/1560
https://en.wikipedia.org/wiki/Hilbert_curve https://en.wikipedia.org/wiki/De_Bruijn_sequence
I want to make use of it in ClickHouse, but we did not (yet), see https://github.com/ClickHouse/ClickHouse/issues/41195
Explanation: https://en.m.wikibooks.org/wiki/Haskell/Zippers (cites: http://strictlypositive.org/diff.pdf)
For me it changed my mind on wasting time on less efficient algorithms.
Example with factories: https://refactoring.guru/design-patterns/factory-method
When I had to deal with the signals from a rotary encoder the first time (being a programmer with two left hands and zero hardware affinity), I had a look at a couple of C libraries but didn't have the patience to slog through their implementations in order to understand what signals they were decoding.
...until I saw this: https://github.com/PaulStoffregen/Encoder/blob/master/Encode...
I'm not sure if it was this exact library, but that's the comment I saw. Nice and obvious, in contrast to all the obscure attempts to convey what was happening all the other libs made through prose comments.
(I'd love to see similar style animations of various crypto algorithms like MD5, AES, etc if anyone has the cycles.)
[1] https://upload.wikimedia.org/wikipedia/commons/b/bd/Networkf...
Comparing solutions based on the perceived reliability curves of their lifecycles is useful.
ps: https://reliableandefficient.com/2015/07/how-your-equipment-...
Imaginary Numbers are Real - https://www.youtube.com/playlist?list=PLiaHhY2iBX9g6KIvZ_703...
The above presentation in pdf: https://www.welchlabs.com/resources
This is the first teaching video/animation which wowed me (i prefer hard copy books).
[0] https://en.wikipedia.org/wiki/Pumping_lemma_for_context-free...
[0] https://www.amazon.com/Programming-Environment-Addison-Wesle...
This one will stay with me for life i think
Though perhaps more of a visualization than an illustration
I _loved_ reading papers from Distill Pub [1] as they contained interactive diagrams.
My most favorite one so far is the thread on Differentiable Self-organizing Systems [2]. I liked the lizard example very much as it is interactive, and lizards grow lost organs back. I think this is funny.
[0]: https://setosa.io
[1]: https://distill.pub
His approach to visualization is I think by far one of the best things on the internet. His rework of a classic paper on small world networks is fantastic as well: http://worrydream.com/ScientificCommunicationAsSequentialArt...
Use code HAPPY23 to save 15%.
[0] https://cs.cards
Nice effort, and the format of the diagrams looks good. I do find the description close to impossible to read due to the use of all caps, monospace and most of all, lack of line spacing. I haven’t thought more on this, but within the constraints of the card sizes if this part could be improved, that’d be great.
[1] https://architecturenotes.co/redis/ [2] https://architecturenotes.co/things-you-should-know-about-da...
Here is a link to an article with my favorite picture from the book as its main image:
https://hackerboss.com/thinking-forth-the-unsung-classic/
It shows the "Universal Processor" which looks like a cross between a computer and a liquidizer and has a big knob on the front with "Data", "Word", "Food" on it! It is a humorous illustration of "An overgeneralized solution".
In fact Thinking Forth has lots of great humorous cartoons and super insights into making real software that it is still a good read today. You'll learn a bit of Forth too!
I read this book at a formative age, and despite not writing a great deal of Forth code, the philosophy of this book has stuck with me.
Here is a link where you can get an electronic copy as it is out of print now and Leo Brodie has graciously allowed it to be distributed under the Creative Commons license.
https://www.hackerearth.com/practice/algorithms/sorting/quic...
https://www.thelogocreative.co.uk/wp-content/uploads/How-to-...
https://www.fastcompany.com/3056519/design-lessons-from-the-...
They released them as free pdfs a while back, but I can't find it now. Looks like they stopped that.
https://craftinginterpreters.com/image/scanning/lexigator.pn...
For example: https://maggieappleton.com/databases
https://www.youtube.com/watch?v=EdIKIf9mHk0&list=PLOmdoKois7...
https://blog.cloudflare.com/a-relatively-easy-to-understand-...
Maybe this image if the URL doesn’t get munged:
https://blog.cloudflare.com/cdn-cgi/mirage/551bd7d005a1232db...
[0] https://stevemcconnell.com/wp-content/uploads/2017/08/art04-...
[1] https://stevemcconnell.com/articles/software-quality-at-top-... (The illustrations are slightly broken. You need to tap|click on the placeholder, to display the image).
For example:
https://i.pinimg.com/originals/a7/bc/49/a7bc49be1828ca9a51e4...
https://flexadata.com/images/architecture/ntier-application-...
https://docs.mattermost.com/_images/MattermostDeployment5kaw...
They have zillions of products, so I understand that not all their icons can be immediately recognizable, but is there meaning to the colors of icons? I can’t think of, for example, a reason why “Batch”, “CloudFront” and “Glacier” have the same color.
Similarly, is there a language for recognizing icons? I don’t understand why EFS and CloudFront both are stacks of cubes, for example.
I think I would choose the same colour and/or similar shapes for all icons that denote data stores (examples: S3, Glacier, RDS), for example, a different one for compute (examples: Lambda, EC2, Batch), and a third one for connections (load balancer, Route 53, CloudFront)
Also, why are there such subtle differences in some of the colors? Do they mean something?
Finally, if one of your 100+ products is called “S3” and you have to design a recognizable icon for it, how on earth can you not put a big “S” and a big “3” in that icon? It can’t be that they want to avoid text at all cost, as they wrote “Aurora” in an other icon.
I've always found it really awesome how the cover of a book can clarify concepts in such a funny and concise way :)
[1] https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanen...
[2] https://www.amazon.com/Computer-Networks-2-downloads-Andrew-...
Figure 7.64 "Circuit diagram for a PLA", which demonstrates how the logical duality between AND and OR is reflected, at the physical gate level, by a π/4 rotation between encode and decode planes.
https://www.amazon.com/Compilers-Principles-Techniques-Alfre...
If you know a little bit about the problem space, the 3 main diagrams (2.1, 2.2, 3.1) in the whitepaper basically tell you how to implement it.
The idea is that every story, song, piece of knowledge, etc are in there if you know where to find them.
(And also, every erroneous fact, false story, etc)
Borges was a direct influence on William Gibson most notably (to me at least) seen with the short story "The Aleph" by Borges [1]. Gibson had an "aleph" device simulating reality in "Mona Lisa Overdrive" (which many of the characters mispronounced as "LF" device).
On the right. It's also the cover art for the book
Direct: https://ia800101.us.archive.org/BookReader/BookReaderImages....
It was my first introduction into actually thinking about and working with distributed systems at University, a field I've been in love with since, so it seems quite formative. Plus I always thought aesthetically it looks lovely, like it'd make a good tattoo.
https://martinfowler.com/bliki/Yagni.html (Scroll a bit).
I really like this comic. Mainly the "Testing in production" near the bottom right.
It mocks agile in it's different forms.
It's the standard diagram of how Transformer language model works (https://www.researchgate.net/figure/Transformer-Language-Mod...). When I tried to figure out transformers, I saw it in every single paper, and it didn't help almost at all. I think I finally got a good understanding only when I looked at a few implementations.
Figure 2.3 (also inside the front hardcover) "The Price/Performance Tradeoff"
A diptych of size vs. cost, and latency vs. cost, for various storage technologies (in 1990. that said, the shape of the curves has not changed much in 3 decades; only the absolute numbers are out of date)
(FWIW, the "tape robot" streamed architecture they predicted has indeed come to pass; it's just that we use network flows instead of tape robots as our stream endpoints)
https://en.m.wikipedia.org/wiki/Automata_theory
I'm sure many are familiar with state diagrams, directed graphs that can be used to explain regular expressions or any other FSM
Turing machines also can be represented with a diagram featuring a "tape" - so elegant
Professor Rick Thomas made a great impression on me whilst lecturing on the subject of Automata
For some reason, Fourier transforms just didn't click until I saw that picture.
[0] http://bit-player.org/wp-content/extras/bph-publications/AmS...
Figure 40. (a collage of scripts, demonstrating how meaning can be carried in strings of [many different choices of sets of] symbols: compare Turing or Shannon)
Figures 135 & 136. (Escher's Drawing Hands, followed by a structural sketch showing how the paradox of mutual recursion can be solved by something implicit and prior to both: compare McCarthy or Curry's Y combinator)
Linking the whole article but if you scroll it's the 5th image. https://arbital.com/p/bayes_rule/?l=693
however it takes a while to get all the details...
https://raw.githubusercontent.com/wiki/ekmett/lens/images/Hi...
https://www.kaspersky.com/content/en-global/images/repositor...
I don't think it needs explanation. Pretty wild.
https://instagram.com/citationsnft
It was an experiment that didn’t do much commercially, but we learned a lot from it.
This, plus the fact that the original source is cited, makes it work.
The author certainly seems to hate “agile” but doesn’t have any critiques for it. Instead he’s punching at ghosts.
Specially the git-purr one that explains git.
https://archive.org/details/unix-magic-poster-gary-overcare-...
did not have formal education on distributed systems in my country but learned many things in this topic on job.
So then me took course by lindsey kuper on youtube. it is amazing course, super clear instructor even for me with not good english.
i think professor in this class say these diagrams came from leslie lamport who did lot essential thinking in distributed system space
(Tech Support Cheat Sheet)