Journal 2016


-ยง-

PSYCHIC BARRIER: I am literally a different person from the person who wrote these entries, as almost every cell in my body has replaced itself since then.

2016-05-01 #

Before Richard Stallman, there was Jacques Ellul, who warned that technology has a cost, and that cost is freedom. He argues that technology has become the new religion, and society is dominated by technology. No longer are people in control of technology, as it becomes a force of nature as well as a religion of its own. Upholding freedom is as important now as it ever has been, and the means to do that is through reflection on our ethical responsibilities as humans.

Any critique of technology is met with some counter-argument that pre-agricultural society was far worse, but this is not what Ellul advocates. Unlike Henry Thoreau (or even Ted Kaczynski) who did actually live in the woods, Ellul embraces technology. Indeed, technology is not something that can just be discarded entirely, it has already escaped Pandora's Box, and now it is a matter of coping with it.

Freedom from Technology

The steps towards attaining freedom from technology shared by Stallman, Ellul, and others is to reflect, rather than "reflex" as Ellul posits. For example, the appeal of services like Uber is that it is more convenient to hail a taxi using a phone application and to have it negotiate all of the personal interactions for the consumer. People are more focused on the technique than on its social aspects. Uber is widely known for operating illegally in certain circumstances and for depriving its workers of social benefits, similar to other illicit trades, but this is given much less attention than it deserves. I think that people have a social responsibility to protest, but they are too distracted by technique. Top mathematicians, scientists, and programmers join government agencies and software companies not in order to trample on the rights of people even if that is the organization's unstated goal, but in order to practice technique. I think that is ethically reprehensible, and those people should quit.

Regarding protest, Stallman advocates avoiding non-free software, and more recently "Service as a Software Substitute" (SaaSS), as it deprives the user of freedom. This freedom is largely overlooked by the majority of software users who are not programmers, and even programmers themselves. However, it is more relevant now than it ever has been in a post-Wikileaks, post-Snowden world, as the lack of transparency between people and corporations and government agencies lead to gross violations of social contracts. With proprietary software, the user must trust that the software is not acting against their own interest, and is free of intentional security flaws.

I would argue that this extends not only to software, but media as well. For example, streaming is the new renting. No longer do people actually own media, free to consume it on their own terms, but now media is back in the ownership of the oligarchy that merely lends media to consumers, which can deprive people whenever they want.

The Software Industry

When computers were invented, it was possible for one person to fully understand what every vacuum tube did, what every instruction does, and the mathematics and electrical engineering involved to build one. The software "engineers" of today know hardly about the layer below them, let alone the hardware. A sort of willful ignorance is imposed by cloud computing which further removes the programmer from the hardware. There is more demand for higher level abstractions, which is why fundamental computer science research is at an all-time low. As newer generations of programmers enter industry, they are also deprived of passing on the generational knowledge, because age discrimination forbids older programmers in the workplace.

The software industry is a new religion, and technique is sacred. Therefore it is no coincidence that the job title "developer evangelist" exists. Even the act of critiquing popular technology becomes like blasphemy to the Church. Sometimes technique itself attains a cult-like status, currently functional programming, static typing, testing, Agile/Scrum management, etc. People develop quasi-religious views and shun everything that does not fit in their worldview, such as the widely abhorred PHP language.

I think that software professionals as a whole can do far better, but it is currently a very low status position for the vast majority. It may be decently paid at the moment, but only because of market forces of supply and demand, but still it is relatively underpaid compared to the value that it provides. In order to achieve that, I think programmers must let go of tribal battles between their favored techniques and treat them not as sacred things to take personal offense to.

The primacy of technique in the daily lives of people is indeed harmful to freedom, as it encourages reflex rather than reflection. It's too easy to get distracted by technique and forget about the goal of software: making technology useful for people (and not harmful).

2016-03-20 #

Once upon a time, it was standard to write an HTML page from scratch and to publish it by uploading it to some remote server, typically using FTP. The page would be boilerplate free, coded by hand and picking only what is needed. More importantly, another person could simply view source from a web browser and see clearly how it was made, as there were no intermediate build steps or heavyweight JavaScript libraries involved. Now it seems that in order to put a static page online, one needs a fancy build tool with dozens of different plugins for CSS pre-processing, compiling from JavaScript to JavaScript, and heavyweight JavaScript libraries just to render the document. Web pages have become bloated and unnecessarily complicated, and that is not a good thing for the web.

The website obesity crisis is what happens when lots of smart people get paid to spend a lot of time and energy doing very trivial things in very complicated ways. This is how complicated build tools, source-to-source compilers, and heavyweight libraries that re-invent the browser within the browser are born. Manipulating the Document Object Model isn't complicated or slow, it's the giant leaky abstractions that are complicated and slow. Any idiot can make complicated things work, it takes insight and discipline to keep it simple.

What sucks about education in web development is that beginners start by learning the latest frameworks without actually picking up fundamental skills. Even web developers with years of experience never grow out of being end-users of libraries and frameworks, because they are stuck on repeating their first year of experience. The new generation of web developers don't know that the DOM exists because they rely on frameworks that try to abstract it away completely, don't know what HTTP is capable of so they either under-utilize it or go with some complicated protocol that tunnels through HTTP, and don't care for the cascading feature of CSS so they ditch it entirely.

The web doesn't need complicated ways to make text load faster, there is no technical reason for it. At worst, it becomes another way to game search engine results in favor of single vendor technologies. In concrete terms, here is all that is necessary:

Some additional fluff like meta-information for mobile browsers, and links to favicon and feed are nice but not necessary.

There is some contention over the difference between web pages and web applications, but I would argue that there is no difference. Web applications are just manipulating the DOM under the hood, and I think this aspect should be as transparent as possible, otherwise web developers fall into the trap of the inner platform effect. The popular frameworks such as React.js, Angular.js, or Ember.js are competing on creating their own inner platform.

The death of progressive enhancement and websites that simply do not function without JavaScript is a very bad trend, and a great loss for the usability and freedom (a lot of JavaScript in the wild is minified and proprietary) for the web as a whole. This reflects a larger change in how website are built: top down, rather than bottom up. Instead of starting from scratch and only using what's needed, modern web development is dictated by frameworks that come with a great deal of complexity, which the authors try to dismiss as "implementation details". Implementation details count, and it makes the difference between megabyte-sized blobs that are horrendously inefficient and marginally acessible on low-powered devices, and highly efficient web applications that can run on almost all devices.

I would like web development to be simple again, so that people who are otherwise non-technical can author a page from scratch and put it on the web, from start to finish, instead of requiring highly specialized (and fairly useless) vendor technologies.