💾 Archived View for thrig.me › tech › bloat.gmi captured on 2023-04-19 at 23:13:39. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-01-29)

➡️ Next capture (2024-05-10)

🚧 View Differences

-=-=-=-=-=-=-

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMM~                                       ~~~MMMMMMMMMMMMMMMMMM
MMMMMMP'                                               ~MMMMMMMMMMMMMM
MMMMMM                                                   ~MMMMMMMMMMMM
MMMMM#                                                     ~0MMMMMMMMM
MMMMM#                                                       MMMMMMMMM
MMMMM#                                                        MMMMMMMM
MMMMM#            ______________________________               MMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm_            ~MMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMg            MMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMf           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMf           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMP            MMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM~             MMMMMM
MMMMM#           "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               0MMMMMM
MMMMM#                                                        jMMMMMMM
MMMMM#                                                       wMMMMMMMM
MMMMM#                                                     _MMMMMMMMMM
MMMMM#                                                     ~MMMMMMMMMM
MMMMM#                                                       ~MMMMMMMM
MMMMM#                                                        ~MMMMMMM
MMMMM#           jMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmy             4MMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy            MMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMf           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMf           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0'           MMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM             MMMMMM
MMMMM#           "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~              dMMMMMM
MMMMM#                                                        jMMMMMMM
MMMMM#                                                       jMMMMMMMM
MMMMM#                                                      wMMMMMMMMM
MMMMM#                                                    jMMMMMMMMMMM
MMMMMMy                                                _wMMMMMMMMMMMMM
MMMMMMMm_                                           _wMMMMMMMMMMMMMMMM
MMMMMMMMMMwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMM~~   ~~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMM~         ~0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           4MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMM#            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~MMMMMMMMM
MMMMM#                                                         MMMMMMM
MMMMM#                                                          #MMMMM
MMMMM#                                                          #MMMMM
MMMMMMm,                                                       wMMMMMM
MMMMMMMMmw__________________________________________________wwMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMM~~~                              ~~~MMMMMMMMMMMMMMMMM
MMMMMMMMMMMMM~~                                        ~~MMMMMMMMMMMMM
MMMMMMMMMMM~                                              ~MMMMMMMMMMM
MMMMMMMM@'                                                  ~MMMMMMMMM
MMMMMMMP                                                      MMMMMMMM
MMMMMMP             _jwwwwwwwwwwwwwwwwwwwwwwwwmwy_             #MMMMMM
MMMMMM'           _MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy            MMMMMM
MMMMM#            MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           4MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMf           #MMMMM
MMMMM#            0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM'           #MMMMM
MMMMMM,            MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM             MMMMMM
MMMMMM0               ~~~~~~~~~~~~~~~~~~~~~~~~~~               #MMMMMM
MMMMMMMM,                                                    _#MMMMMMM
MMMMMMMMMy                                                  w0MMMMMMMM
MMMMMMMMMM0w,                                             w0MMMMMMMMMM
MMMMMMMMMMMMMmw_                                      _wwMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMmww____________________________jwwMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMM~~~                              ~~~MMMMMMMMMMMMMMMMM
MMMMMMMMMMMMM~~                                        ~~MMMMMMMMMMMMM
MMMMMMMMMMM~                                              ~MMMMMMMMMMM
MMMMMMMM@'                                                  ~MMMMMMMMM
MMMMMMMP                                                      MMMMMMMM
MMMMMMP             _jwwwwwwwwwwwwwwwwwwwwwwwwmwy_             #MMMMMM
MMMMMM'           _MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy            MMMMMM
MMMMM#            MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            #MMMMM
MMMMM#                                                          #MMMMM
MMMMM#                                                          #MMMMM
MMMMM#                                                          #MMMMM
MMMMM#                                                          #MMMMM
MMMMM#            jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj,           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl           #MMMMM
MMMMM#           jMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM6           #MMMMM
MMMMMMm,        wMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMw        _wMMMMMM
MMMMMMMMmw___ww0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmw___wwMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMM~~                                                  ~~MMMMMMMM
MMMMMM~                                                        ~MMMMMM
MMMMM#                                                          #MMMMM
MMMMM0                                                          #MMMMM
MMMMMM0y                                                      _#MMMMMM
MMMMMMMMMmmmwwwwwwwwwwwwwwwww            wwwwwwwwwwwwwwwwwwwwMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM            MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM,          _MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM0_        ,0MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMwy__jwMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

The reasonable reader might well ask "why did you just waste my time with those huge letters?" Thus, a definition of bloat: undesirable noticeable excess, especially that which goes beyond some bound, real or imagined. This document certainly would be quicker to read, and would have taken less time to write, require less storage space, and take less time to transfer without all that bloat.

Bloat is fractal, in the sense that bloat is a feature at all levels of software. The echo(1) command for instance has been bloated over the years to (maybe) not emit a trailing newline, to (maybe) handle various escape sequences, to (maybe) not echo certain arguments, especially those that overlap with options processing. echo can be written in about 75 lines of assembly, most of that code being compatibility with the echo shipped with the operating system in question. The assembly version is 50% to 90% faster than that provided by the OS; I suspect the inclusion of libSystem.B.dylib in /bin/echo is a big reason for the slowdown. This implies multiple sources of bloat, one being extra geegaws added to software, and another the frameworks or libraries the software relies on. Bloat, like the letters above, does increase the size of the software; the assembly echo is about half the size of the vendor's /bin/echo, or 10% the size if one also includes libSystem.B.dylib in the tally.

    $ stat -f %z $(findin echo) /usr/lib/libSystem.B.dylib
    8288
    18032
    60560

echo bloat is generally not a problem; the power savings from a more efficient version are likely negligible; if power were that much of a problem one would switch to a completely different platform. Portability problems are more likely, given the various incompatible forms of echo, though much code written for echo (or, worse, bash) may not ever be ported. That is, while echo has been bloated with features the bloat may not be undesirable (the -n flag is handy; I've included a similar flag in various utilities I've written) and may not ever be noticed if the software is never ported.

A step up from echo is vi(1). vi has about three orders of magnitude more code than echo. Bloat is present in at least two forms; one would be weird features, another is portability to weird OS. Both add code and increase the attack surface. Most of this code, however, will escape notice; I only found the type-NUL-right-after-insert feature when looking through the code, and for weird OS portability there's extra code involved in configuration file reads that tries to account for a System V feature where users could apparently give their files away. This extra code probably slows down the startup, though at 23 milliseconds that bloat is not noticeable on a 2.66 GHz Intel Core 2 Duo, vintage 2009.

    $ expect -c 'puts [time {spawn -noecho vi; expect ~; send :q} 30]'
    22879.190666666665 microseconds per iteration

Emacs, meanwhile, should not be run with the above test, especially if all 30 instances are trying to recompile things. One Emacs process required a kill -9 to unwedge it from the CPU. Memory use and complexity could be indications of bloat. How would 30 Electron instances fare, all started up nearly at once?

vim has about an order of magnitude more C code than vi but does not take an order of magnitude longer to get itself up off disk; startup times may not scale with lines of code. vim would likely be worse using --with-features=huge or with plugins, neither of which I use.

    $ expect -c 'puts [time {spawn -noecho vim; expect ~; send :q} 30]'
    48518.95273333333 microseconds per iteration

More interesting may be grep in vim. grep originates with the ed(1) editor, and is named after the g/re/p commands (global, regular expression, print). Here's an example.

    $ printf >a 'habla\na\nla\ncasa\nblanca\n'
    $ printf 'g/blanca/p\nq\n' | ed -s a
    blanca
    $ grep blanca a
    blanca

This feature is still part of vim as :g/blanca/p by way of Ex by way of ed. vimgrep meanwhile imitates the external grep command; vim thus has (at least) two grep implementations, and can call out to many more. Is that bloat?

Extra features are more of a problem in larger projects; here we find bloat that is hard to ignore. As in, you can't see the software, yet, as it is still trying to get itself up off disk. And why is the cpu fan running after Firefox shows a table with about 30 rows in it? Is all that JavaScript really doing anything good?

Joel Spolsky has an apologia for bloat somewhere on the Internet; one claim is that various pages are never loaded and are therefore not a problem. This claim is easy to negate by pointing out the security vulnerabilities of bloatware. Check out the trainwreck of browsers or most anything from Microsoft in the CVE database. Sloppy coders, much? And if pages are not loaded, or something, then why does bloatware so often beachball or hourglass the long way up off disk?

Security problems are real; imaginary issues from bloat fall into the more subjective realm of "it takes too long to load" or "please do not install Word 6," a request made by various users. (Excel, meanwhile, was corrupting portions of their genomic data. Around two decades later those genes were renamed. If you know Excel corrupts data you can watch it like a hawk, but then why not use less bad and less mentally taxing software?) On older systems speed complaints are more real than imagined; some users not desirous of Word 6, however, had systems that could run it. This contradicts another claim made by Joel, that magical "Intel giveth" will airbrush the bloat. What was so wrong with Word that users said "no" to it? I never really used it much, but if I had to guess: too many geegaws and whatzits.

And, a visible framerate on older, slower systems. Or even not so very old systems. Too much code. We even have a word for that: Bloat.

One issue may be that developers typically have what I call "gonzo compile rigs" or the crazy fastest computer that someone can afford. This means things with terrible compile times (hello, Rust) or terrible run times (heavyweight champion browsers) may not even be noticed. Giving developers systems that are somewhere off of extended warranty may not be popular, though; they could decamp to somewhere that gives them new shiny, and one ethos in certain countries is "thou shalt make new!" less so to maintain the existing. One may observe both practical and cultural forces at play.

Now what is considered bloat, much like spam, will vary from person to person. Some will call vi bloated, since it usually comes with a huge unix environment and takes more resources than a Forth block editor does. Others put the bar so high that nothing is bloated: hardware updates and some memory pages solved that back in the 80s, didn't you know? That bloatware complaints continue down to this decade suggests that things are maybe not so shiny as a Spolsky would have it nor is the situation as dire as a microcontroller crank might claim--unless one lives on a boat in the middle of the Pacific.

But Why Bloatware??

Why does bloatware exist? Convenient pre-ground coffee also exists; the staleness and rancidity is besides the point. There is a market for mediocre software:

JIRA, just like Teams, is slow, bloated, still won't fix basic issues and largely exists to appease managers. You have to actively work to make JIRA a pleasant experience. It's too easy for most management to make it hell. -- BlargMcLarg, https://news.ycombinator.com/item?id=32937470

Other comments indicate that quality is not the point: perhaps a company has already bought into the Microsoft stack, or it's easier to obtain regulatory approval, or Teams competes with other crappy bloatware. A disconnect between management and engineering (as in the Space Shuttle Challenger disaster) could also be relevant.

And if you can sell a poor product for profit, why waste money making it less bad?

Back to tech index

tags #legacyweb