Criticizing Computers
I&#x27;ve read the article: I&#x27;m more furious at the author&#x27;s handwavy criticisms than anything else.<p>Going down point by point:<p>&gt; 1. Good hardware is masking really bad software.<p>This point assumes that there isn&#x27;t any other reason other than &quot;developer laziness&quot; that bad software exists. It glosses over the fact that &quot;wasteful&quot; development practices are often hoisted onto developers due to the need(s) of:<p>- Making the software grokkable&#x2F;comprehensible for new&#x2F;incoming developers<p>- Ease of software maintenance (related to earlier point)<p>- Limiting failure states of the software in question (related to earlier point)<p>- Time constraints &amp; mandated requirements from 3rd parties (often business&#x2F;legal people that focus on &quot;get it done&quot;, rather than the necessity of such constraints&#x2F;requirements in the first place)<p>------<p>&gt; 2. All the bad code is piling up, and we don’t know how to get rid of it.<p>The author failed to mention that the edge cases encountered in the wild &amp; the additional complexity needed to accommodate them are often the main reasons for such &quot;bad code&quot; existing in the first case. The aforementioned edge cases, along with the time constraints &amp; mandated requirements, are what lead to &quot;bad code&quot;, along with feverent disapproval of its removal due to &lt;insert edge case&#x2F;legal requirement&#x2F;business case here&gt;.<p>------<p>&gt; 3. Programs used to be pipeable. Now, GUIs are killing pipes.<p>This is in large part due to the unwillingness of (a whole lot of) non-developers to learn how to use pipeable tools in question, instead hoisting it back onto developers to &quot;give me something that *I* can work with&quot;. This is fundamentally a social issue that hasn&#x27;t been addressed at all, in that the increased self-voluntary infantilization of the general public is inducing demand for GUIs.<p>There are definitely non-developers that decry this trend of simpler-&amp;-worse GUIs, but the silent majority have altogether said that &quot;this is fine&quot;, and that they&#x27;re willing to be coddled in order to obtain the luxuries that they desire, even if it induces further infantilization.<p>------<p>&gt; 4. Computers are telling me what to do, but I can’t tell them what to do.<p>This is again related to (3), and the self-infantilization that a lot of people are willing to undergo for the sake of convenience. It also exposes the author&#x27;s unwillingness to take the necessary steps in order to perform the self-customization that they so desire.<p>This point also glosses over the reality that as the number of possible configurations increases, the number of possible failure states grows at least linearly at the same pace, with said failure states often growing at a multiplicative pace in proportion to the number of possible permutative states of configuration. Is it no wonder that in an effort to decrease the surface area of failure states, that said configurations are walled off in favor of funneling everyone towards the default?<p>------<p>&gt; 5. Software is not technology. It is ideology.<p>The quote that the point entirely uses rests on 2 points:<p>1) Hollywood&#x27;s system, when compared against software development, has someone assuming directive control, whereas software doesn&#x27;t have such a person.<p>2) There&#x27;s an equivalency whereby (interactive software == movies)<p>(1) does exist in modern software development, with the list of requirements &amp; general architecture drawn up by product owners &amp; lead developers respectively, with overall development handled by the rest of the development team.<p>(2) is false due to the fact that whereas movies only need to showcase 1 linear series of synchronized video &amp; audio, interactive software has to account for all possible interactions with the software itself. A more proper analogy that could be drawn would be choose-your-own-adventure novels, from which interactive text-based games were partially derived from. Even so, said novels do not have to deal with malformed inputs, &amp; the choices given by the novel do not need to internally carry state.<p>------<p>&gt; 6. Computers are fast, but in the dumbest way possible.<p>The point in question is potentially performing a lie via omission, in that the author left out the rest of the interview that they were quoting from. (<a href="http:&#x2F;&#x2F;worrydream.com&#x2F;refs&#x2F;Mead - Gene Youngblood Interview.pdf" rel="nofollow">http:&#x2F;&#x2F;worrydream.com&#x2F;refs&#x2F;Mead - Gene Youngblood In...</a>)<p>(Side note: The interview in question, even if there is no concrete date for the interview, can de dated to the early-to-mid 80s, due to the interview&#x27;s usage of terms like floppy disks (pg. 18), the Intel 286 processor (pg. 5), &amp; the 1.5um silicon manufacturing processes (pg. 4). Since then, SIMD, GPGPU programming, and compiler-derived vectorizations &amp; optimizations have allowed for further performance improvements, on top of the increased CPU performance that has accrued since then.)<p>In said interview, Carver lays out that the 10000x solution being touted are none other than FPGAs &amp; ASICs:<p>|&gt; GENE: What do you call the kind of architecture you&#x27;re talking about?<p>|&gt; CARVER: I call them silicon algorithms. You just map the application right into silicon. And the technology for doing that we understand pretty well. I don&#x27;t mean we&#x27;ve worked it all out. But we&#x27;ve developed the technology for taking high-level descriptions and putting them on silicon. It&#x27;s called silicon compilation, which is the obvious next step. You need to compile things right down into the chip instead of compiling them into some code that you feed to this giant mass of chips that grinds away on it trying to interpret it.<p>|&gt; GENE: So the silicon compiler solves not only the complexity problem but also the problem of massively parallel architectures by allowing us to experiment with the dedicated hardware that alone can realize the full potential of that architecture.<p>|&gt; CARVER: You bet. Otherwise there&#x27;s no hope. Because then you&#x27;re stuck. If it takes five years to design a chip nobody&#x27;s going to experiment with algorithms in silicon, right? Because it takes years to get any place. And that&#x27;s in series with your learning curve. So you have to have a technology for experimenting with designs in silicon more rapidly than that.<p>Ironically, the inability to customize, which was lamented in (4), are further compounded by the crystallization of algorithms into &quot;silicon algorithms&quot;, whether via FPGAs or ASICs: The algorithm in question becomes much harder to modify as it descends downwards from general software into silicon gates, with any bugs&#x2F;mistakes requiring much larger efforts to fix them.<p>------<p>&gt; 7. No one knows what they’re doing, and it’s a civilizational problem.<p>The entire point rests on the axiom that unless everything with a system can be understood by a single person, said system shouldn&#x27;t be built.<p>This is nothing short of a &quot;complex == bad&quot; type of thinking, wherein in order for something to exist, everything from top to bottom has to be understandable to a single person. Leaving aside the fact that the same sort of thinking can be applied towards everything else in modern society (modern plumbing &amp; electrical systems, cars&#x2F;planes&#x2F;trucks&#x2F;&lt;insert transport here&gt;, legal&#x2F;tax laws, institutions&#x2F;bureaucracies, economics, geopolitics, modern medicine, etc.) &amp; that there&#x27;s no sort of alarmism from the author applied to said things&#x2F;systems, the author fails to recognize the fact that the distribution of responsibilities is the foundation of modern civilization, and that the resulting specializations &amp; improvements made towards each component of the entire system results in a system that is overall better off than if everyone w forced to build everything themselves.<p>There are definitely some technical debts that can be removed from each part of the overall system, but to say that everything more complex than what can fit in one person&#x27;s head should be barred from existence is a exceedingly prescriptive way to view how the author&#x27;s ideal society should function.<p>------<p>All in all, the author has not realized that they&#x27;ve willingly allowed themself to undergo software infantilization, nor have they (at least publicly) done any steps towards weaning themselves off from the process itself, *WHILST* having the gall to complain to the world about how &quot;everything about computers now = bad&quot;. They&#x27;ve not publicly shown any willingness to at least take the bare minimum in software self-discovery in the first place.