NeXT, OOP, WWW, HTML

The article link URL was missing a 2 at the end:

Democracy as a form of end-user programming. Maybe the analogy breaks down somewhere, but it brings up correspondences like: society as a global-scale computer running ideological software (nations, governments); the web as our collective brain and embodiment of the noosphere; an individual as a function, or living object with mutable state; language as communication protocol (HTTP: Human Thinking Transfer Protocol).


From “Do Artifacts Have Politics?”

At issue is the claim that the machines, structures, and systems of modern material culture can be accurately judged not only for their contributions to efficiency and productivity and their positive and negative environmental side effects, but also for the ways in which they can embody specific forms of power and authority.

..In what follows I will outline and illustrate two ways in which artifacts can contain political properties.

First are instances in which the invention, design, or arrangement of a specific technical device or system becomes a way of settling an issue in the affairs of a particular community.

Second are cases of what can be called ‘‘inherently political technologies,’’ man-made systems that appear to require or to be strongly compatible with particular kinds of political relationships.

Summarized by Cogito-1 8B:

  1. Technical arrangements designed to settle issues in specific communities

    • Example: Robert Moses’ low bridges on Long Island, NY, intentionally built to exclude buses (typically used by poor people and minorities) from parkways, thus limiting their access to Jones Beach.
    • Similar examples include Parisian thoroughfares engineered to prevent street fighting during the 1848 revolution.
  2. “Inherently political technologies” that require or are compatible with particular kinds of political relationships

    • Example: The mechanical tomato harvester, which not only changes harvesting practices but also produces tomatoes that are harder and less tasty, benefiting large-scale agribusiness while disadvantaging small farmers and agricultural workers.
    • Another example is the history of industrial mechanization, where technologies were designed to break labor unions rather than simply for efficiency.

An interesting example was the contrast between nuclear power plants and solar energy.

Many advocates of solar energy have argued that technologies of that variety are more compatible with a democratic, egalitarian society than energy systems based on coal, oil, and nuclear power; at the same time they do not maintain that anything about solar energy requires democracy.

Their case is, briefly, that solar energy is decentralizing in both a technical and political sense: technically speaking, it is vastly more reasonable to build solar systems in a disaggregated, widely distributed manner than in large-scale centralized plants; politically speaking, solar energy accommodates the attempts of individuals and local communities to manage their affairs effectively because they are dealing with systems that are more accessible, comprehensible, and controllable than huge centralized sources.

..Thus environmentalist Denis Hayes concludes, “The increased deployment of nuclear power facilities must lead society toward authoritarianism. Indeed, safe reliance upon nuclear power as the principal source of energy may be possible only in a totalitarian state.”

..A similar view is offered by a contemporary writer who holds that ‘‘if you accept nuclear power plants, you also accept a techno-scientific-industrial-military elite. Without these people in charge, you could not have nuclear power."

Well.. I can’t say whether that’s right or wrong, which technology is better or worse for society. Of course I’d prefer local-first, modular decentralized energy production that’s under my control, just like I prefer free and open-source software. But apparently that’s not scalable or robust enough for communities and societies, like food production requires global infrastructure under centralized authority and control of nation states. It seems inevitable, like capitalism.


There’s a punk-ish subculture of circuit bending.

Circuit bending is the creative customization of the circuits within electronic devices such as children’s toys and digital synthesizers to create new musical or visual instruments and sound generators. Circuit bending is manipulating a circuit to get an output that was not intended by the manufacturer.

  • Reed Ghazala, the Father of Circuit Bending: Sound Builders

I like this kind of “subverting the narrative” and questioning the built-in assumption of authority in technology. Well, I enjoy a healthy creative expression of this, because it can certainly go too far and disturb the social order.

Similarly, pirate radio has always fascinated me. It asks, “Who owns the air waves?”

The airwaves are considered a public resource owned by the people, but they are licensed to private broadcasters by the government, specifically the Federal Communications Commission (FCC). This means that while the airwaves belong to the public, companies can use them under certain regulations to serve the public interest.

The early days of BBS (bulletin board systems) and WWW (world-wide web) had that kind of rebellious, subversive social atmosphere. Why it attracted the counterculture types is certainly related to “inherently political technologies” discussed by Langdon Winner.

In 1926 WJAZ in Chicago, Illinois, challenged the U.S. government’s authority to specify operating frequencies and was charged with being a “wave pirate”.


..Apple’s Swift has moved to a reactive model from the NeXT/Objective C object model for UX elements.

One of the most powerful ways to simplify toolbuilding isn’t to hide state in objects but to eliminate state - either through ephemeral functions or immutable values.

I’ve been reading this thread on the forum:

In general I find the C-style of primitive programming refreshing, working with plain data structures and functions; in contrast to C++/Java-style of OOP, which is the dominant paradigm with proven scalability (?), seemingly being dethroned. But there are different takes on what “object oriented” means, and I imagine Swift’s Functional Reactive model is not necessarily mutually exclusive with some variant of the object model. Though the linked article has a single instance of the word “object”, saying:

[The Reactive model] rises up the level of abstraction, so you are able to manipulate the streams instead of objects or functions.

Oh, there’s even a Reactive Manifesto.

We believe that a coherent approach to systems architecture is needed, and we believe that all necessary aspects are already recognised individually: we want systems that are Responsive, Resilient, Elastic and Message Driven. We call these Reactive Systems.

Systems built as Reactive Systems are more flexible, loosely-coupled and scalable. This makes them easier to develop and amenable to change. They are significantly more tolerant of failure and when failure does occur they meet it with elegance rather than disaster. Reactive Systems are highly responsive, giving users effective interactive feedback.

A library I’m learning recently, Dear Imgui, is based on the concept of IMGUI (Immediate Mode Graphical User Interface), from the subculture of game developers and graphics software. There’s a wiki page (About the IMGUI Paradigm) explaining the difference between this and the classic paradigm of “retained mode” GUI.

The crux of it is about how to manage state.

…At its core immediate mode is about how this state is updated. In classical gui the state of the application was synchronized to the gui state by modification. On the other hand immediate mode is closer to functional programming. Instead of mutating state, all previous state is immutable and new state can only be generated by taking the previous state and applying new changes. Both in dear imgui and nuklear there is very little previous state and most is build up every “frame”.

..Counter intuitively this is often less complicated than the traditional “retained mode” style of GUI libraries because there is no duplication of state. That means no setup or teardown of widget object trees, no syncing of state between GUI objects and application code, no hooking up or removing event handlers, no “data binding”, etc.

The structure and function of your UI is naturally expressed in the code of the functions that draw it, instead of in ephemeral and opaque object trees that only exist in RAM after they’re constructed at runtime. You retain control over the event loop and you define the order in which everything happens rather than receiving callbacks in some uncertain order from someone else’s event dispatching code.

Well, we went from the state as a political entity to the state as a program’s data about itself which determines its next actions and state changes.

A state is a description of the status of a system that is waiting to execute a transition. A transition is a set of actions to be executed when a condition is fulfilled or when an event is received.

In some programs, information about previous data characters or packets received is stored in variables and used to affect the processing of the current character or packet. This is called a stateful protocol and the data carried over from the previous processing cycle is called the state.

In others, the program has no information about the previous data stream and starts fresh with each data input; this is called a stateless protocol.

3 Likes