šŸ“• Node [[big and small computing]]
šŸ“„ Big-and-small-computing.md by @enki

Big and small computing

Iā€™m a utopian, in that I donā€™t believe that computers are a mistake. I have big criticisms about particular technical decisions, but Iā€¦


Big and small computing

Iā€™m a utopian, in that I donā€™t believe that computers are a mistake. I have big criticisms about particular technical decisions, but I donā€™t think those decisions were inevitable. An alternate computer universe, as projected from trends thirty years ago and earlier, was possible; with care and effort, it still is.

The biggest structural problem I see is a failure to distinguish between two different kinds of computing that have fundamentally different needs.

Big computing is computing at-scale. Itā€™s the kind of thing anybody in the software industry is used to, and anyone not in the software industry is accustomed to complaining about. Big computing is client-server. Big computing processes big data. Big computing has millions of users. Big computing hides ā€˜advanced settingsā€™ behind a checkbox or a button so ā€˜regular peopleā€™ donā€™t get intimidated. Big computing has maintainers, bug trackers, and devops on call. Big computing is worried about accidentally committing experimental code to prod. Big computing writes tests, cares about strong typing, and writes things in java because itā€™s easier for HR to find qualified candidates that way. Big computing is worried about job security. Big computing has a project manager and stock options. Big computing ships.

Small computing never died, but you wouldnā€™t know it from reading Hacker News. Small computing has an average user count of one. [Small computing is peer to peer,](https://medium.com/@jkriss/anti-capitalist-human-scale-software-and- why-it-matters-5936a372b9d) and human scale. [Small computing does exactly what the end user wants, because the end user is the developer](https://hackernoon.com/un-jobsifying-software- development-13da1895ac7f). Small computing doesnā€™t distinguish between programmer and non-programmer. Small computing doesnā€™t care about marketing. Small computing is open source because thereā€™s no point in using a restrictive license, not because anyone will ever submit a pull request. Small computing is as unique as a geocities page. Small computing plays.

If you are being paid, you should be doing big computing. Big computing means scale, and scale means that your decisions have technical, social, and ethical ramifications that you have a responsibility to seriously consider. [This means asking for permission](https://medium.com/@enkiv2/it-really-is-better- to-ask-for-permission-3fb1f4b5a22a). It means [facing reality](https://medium.com/@enkiv2/ramifications-of-nearsightedness-in- tech-b00cc0473ce3), [caring about security](https://medium.com/@enkiv2/mirai- was-appropriately-named-257bd6892a24), avoiding intellectual laziness [with regard to tool choice](https://medium.com/@enkiv2/please-badmouth-css-more-in- developer-talks-bf2afeca1a27), and [maintaining familiarity with the lore](https://medium.com/@enkiv2/a-qualified-defense-of-jargon-other-in-group- signifiers-2fe2cd37b66b). Major technical problems often can be traced back to the application of small-computing mantras (ā€œmove fast and break thingsā€, ā€œyagniā€, ā€œitā€™s better to ask for forgiveness than permissionā€) to big- computing situations. Big computing should be extremely conservative, and because of its centralized and hierarchical nature, we should be making decisions based on the categorical imperative: make a technical decision only if you think it would easily and unproblematically scale to every machine in the planet forever.

On the other hand, I consider small computing much more important than big computing. Big computing, because it is big money, gets all the attention; however, big computing is one-size-fits-all and therefore doesnā€™t quite fit anyone. Every programmer began in the context of small computing, and every programmer, in his or her off-time, operates in that context. Systems geared toward small computing (like REPLs, notebook interfaces, smalltalk VMs, and the UNIX command line) are incredibly powerful. Unfortunately, small-computing systems are not made accessible to non-programmers, even though [they absolutely could](https://hackernoon.com/some-tentative-guidelines-for-gui- composability-2900abead1d9).

Almost all user-facing interfaces should be small-computing. Big computing should only exist as a fallback when we, as developers, have failed to make small-computing-oriented systems sufficiently unintimidating. Users should be able to gradually learn to program, without reading manuals, simply by interacting naturally with their computerā€™s UI and performing the kinds of casual customizations we all do to optimize for our use cases. The system of even a non-technical user should be composed of 75ā€“80% code written by that user, within a few months.

On the other hand, big computing, because it is professional , should be subject to licensing. Licenses are not a guarantee of competence, but they are a mechanism that filters out those unwilling to make minimal effort, and they also present a mechanism for ethical lapses to be effectively punished. (ā€œWhy donā€™t I have a license? Oh, Uber asked me to implement a fake surge pricing mechanism and I said yes. Oh, I lost my license because I collaborated with an NSA wiretapping request. I lost my license because I exposed a credit card database to an unvalidated input field. I lost my license because I didnā€™t implement buffer overflow checks. I lost my license for using unsalted SHA1 for password hashes.ā€) Big computing can ruin peopleā€™s lives, so professional developers and their employers should be legally liable for their decisions.


Here are other essays Iā€™ve written on related topics:

[ Trajectories for the future of software
Some decisions are sane. By this I mean: some decisions are things you would choose to do with full knowledge of allā€¦ hackernoon.com](https://hackernoon.com/trajectories-for-the-future-of- software-34f06b8c8fc7 "https://hackernoon.com/trajectories-for-the-future-of- software-34f06b8c8fc7")[](https://hackernoon.com/trajectories-for-the-future- of-software-34f06b8c8fc7)

[ Considerations for programming language design: a rebuttal
Walter Bright, who designed D, wrote an article called ā€œSo You Want to Write Your Own Languageā€. I love D and I respectā€¦ hackernoon.com](https://hackernoon.com/considerations-for-programming- language-design-a-rebuttal-5fb7ef2fd4ba "https://hackernoon.com/considerations-for-programming-language-design-a- rebuttal-5fb7ef2fd4ba")[](https://hackernoon.com/considerations-for- programming-language-design-a-rebuttal-5fb7ef2fd4ba)

[ An alternate web design style guide
Donā€™t use CSS or Javascript. These technologies exist to help a web browser poorly simulate a native app; if your goalā€¦ hackernoon.com](https://hackernoon.com/an-alternate-web-design-style- guide-1aae8d0b5df5 "https://hackernoon.com/an-alternate-web-design-style- guide-1aae8d0b5df5")[](https://hackernoon.com/an-alternate-web-design-style- guide-1aae8d0b5df5)

[ Guidelines for future hypertext systems
Since 1992, the web has been the only hypertext system most of us have known (outside of occasional hypertext systemsā€¦ hackernoon.com](https://hackernoon.com/guidelines-for-future-hypertext- systems-647b6a10f7dd "https://hackernoon.com/guidelines-for-future-hypertext- systems-647b6a10f7dd")[](https://hackernoon.com/guidelines-for-future- hypertext-systems-647b6a10f7dd)

[ Orality, Literacy, Hyper-Literacy
Walter Ong calls only spoken word impacted by literate culture ā€˜secondary oralityā€™ (things like audio recordingsā€¦ medium.com](https://medium.com/@enkiv2/orality-literacy-hyper- literacy-7cf4c779d943 "https://medium.com/@enkiv2/orality-literacy-hyper- literacy-7cf4c779d943")[](https://medium.com/@enkiv2/orality-literacy-hyper- literacy-7cf4c779d943)

My hypermedia history
So, I actually have a long history of (mostly failed or unsatisfying) hypermedia-adjacent or Alan Kay-ish projectsā€¦ medium.com
[](https://medium.com/@enkiv2/my-hypermedia- history-11d576ce6dbb)

[ The end-game of the voice UI (like that of the chat UI) is the command line interface.
To start out with, there are a handful of differences between interfaces centering around how learning curves areā€¦ medium.com](https://medium.com/@enkiv2/the-end-game-of-the-voice-ui-like-that- of-the-chat-ui-is-the-command-line-interface-d3fbef1aa532 "https://medium.com/@enkiv2/the-end-game-of-the-voice-ui-like-that-of-the- chat-ui-is-the-command-line- interface-d3fbef1aa532")[](https://medium.com/@enkiv2/the-end-game-of-the- voice-ui-like-that-of-the-chat-ui-is-the-command-line-interface-d3fbef1aa532)

By John Ohno on April 1, 2018.

[Canonical link](https://medium.com/@enkiv2/big-and-small- computing-73dc49901b9a)

Exported from Medium on September 18, 2020.

Loading pushes...

Rendering context...