Mirrors
Table of Contents
- 1. Introduction
- 2. Mirror List
- 2.1. God is Evil, Man is Free anarchism philosophy religion
- 2.2. The Cathedral and the Bazaar: Collected Essays anarchism philosophy hacker_culture history
- 2.3. TODO Free as in Freedom: Richard Stallman’s Crusade for Free Software anarchism hacker_culture history
- 2.4. TODO THE HACKER CRACKDOWN: Law and Disorder on the Electronic Frontier anarchism hacker_culture history
- 2.5. TODO Seeing Like A State: How Certain Schemes to Improve the Human Condition Have Failed anarchism economics philosophy
- 2.6. The Stigmergic Revolution anarchism economics hacker_culture
- 2.7. Anarchism as a Spiritual Practice anarchism religion
- 2.8. Toward the queerest insurrection anarchism queer
- 2.9. The Union of Egoists anarchism philosophy
- 2.10. The Gift Economy of Property anarchism philosophy
- 2.11. The Anatomy of the Encounter anarchism philosophy
- 2.12. Polity-form and External constitution anarchism philosophy
- 2.13. From Whence Do Property Titles Arise? anarchism philosophy
- 2.14. Constructing an Anarchism: Collective Force anarchism philosophy
- 2.15. TODO Communism Unmasked anarchism philosophy
- 2.16. TODO Anarchists Against Democracy In Their Own Words anarchism philosophy
- 2.17. The Anarchic Encounter: Economic and/or Erotic? anarchism philosophy jobs
- 2.18. TODO My Disillusionment in Russia anarchism history
- 2.19. Anarchy in the U.K. anarchism history
- 2.20. The Right to Self-Treatment anarchism economics
- 2.21. Scratching By: How Government Creates Poverty as We Know It anarchism economics
- 2.22. Labour Struggle in a Free Market anarchism economics
- 2.23. Liberatory Community Armed Self-Defense: Approaches Toward a Theory anarchism
- 2.24. Instead of a Book, by a Man Too Busy to Write One: A Fragmentary Exposition of Philosophical Anarchism anarchism
- 2.25. Bloody Rule and a Cannibal Order! anarchism
- 2.26. Confiscation and the Homestead Principle (1969) anarchism philosophy economics
- 2.27. Anarchy without Hyphens (1980) anarchism philosophy
- 2.28. In Defense of Public Space anarchism philosophy economics
- 2.29. Simple Sabotage Field Manual anarchism direct_action
- 2.30. Are We Good Enough? - Peter Kropotkin anarchism philosophy
- 2.31. The Myth of the Rule of Law anarchism philosophy
- 2.32. Anatomy of the State anarchism philosophy
- 2.33. The Politics of Obedience: The Discourse of Voluntary Servitude anarchism philosophy
- 2.34. Schismatrix Plus fiction literature
- 2.35. Hackers: Heroes of the Computer Revolution hacker_culture anarchism
- 2.36. TODO The Jargon File (version 4.4.7) hacker_culture history
- 2.37. Initial GNU Announcement hacker_culture history
- 2.38. Crypto: How the Code Rebels Beat the Government - Saving Privacy in the Digital Age hacker_culture history
- 2.39. Common Lisp: The Untold Story hacker_culture history
- 2.40. The Bipolar Lisp Programmer hacker_culture
- 2.41. The Cyberpunk Project hacker_culture
- 2.42. What is wrong with Lisp? hacker_culture programming
- 2.43. My Lisp Experiences and the Development of GNU Emacs hacker_culture
- 2.44. Language, Purity, Cult, and Deception hacker_culture programming
- 2.45. The Structure of a Programming Language Revolution hacker_culture programming history
- 2.46. Symbolics Museum history software
- 2.47. How to think in writing intelligence_augmentation
- 2.48. The Failure of Hyperfiction (1998) literature fiction hypermedia
- 2.49. Post Concussion Syndrome: Symptoms, Diagnosis, & Treatment medical personal
- 2.50. Where Lisp Fails: at Turning People into Fungible Cogs. philosophy programming
- 2.51. The “Stirner Wasn’t A Capitalist You Fucking Idiot” Cheat Sheet philosophy anarchism
- 2.52. The Question of Copyright philosophy anarchism
- 2.53. The Collected Writings of Renzo Novatore philosophy anarchism
- 2.54. Science As Radicalism philosophy anarchism
- 2.55. Natural Law, or Don’t Put a Rubber on Your Willy philosophy anarchism
- 2.56. Hayek, Epistemology, and Hegemonic Rationality philosophy anarchism
- 2.57. Economic Calculation in the Corporate Commonwealth, Hierarchy or the Market, and Contract Feudalism philosophy anarchism
- 2.58. The Dispossessed: An Ambiguous Utopia philosophy fiction literature
- 2.59. God Emperor of Dune philosophy fiction literature
- 2.60. TODO Ontology is Overrated: Categories, Links, and Tags philosophy software
- 2.61. Inventing on Principle philosophy programming
- 2.62. Ur-Fascism philosophy
- 2.63. The Mentat Handbook philosophy
- 2.64. Stirner's Critics philosophy
- 2.65. Some Thoughts on the Creative Nothing philosophy
- 2.66. TODO Intuition in Software Development philosophy programming
- 2.67. Notes on Postmodern Programming philosophy programming
- 2.68. TODO Programming as Theory Building philosophy programming
- 2.69. The Unique and Its Property philosophy
- 2.70. Tech Geekers and What is Politics? philosophy hacker_culture
- 2.71. The Repair Manifesto philosophy anarchism hacker_culture
- 2.72. TODO Property is Theft! A Pierre-Joseph Proudhon Anthology philosophy anarchism economics
- 2.73. What is Free Software? philosophy hacker_culture anarchism
- 2.74. TODO File Structure for The Complex, The Changing and the Indeterminate philosophy software hypermedia
- 2.75. TODO Augmenting Human Intellect: A Conceptual Framework philosophy software intelligence_augmentation
- 2.76. TODO Dream Machines/Computer Lib philosophy software intelligence_augmentation hypermedia
- 2.77. TODO Complexity: A Very Short Introduction philosophy
- 2.78. Writes and Write-Nots philosophy intelligence_augmentation literature
- 2.79. TODO Philosophical Investigations philosophy
- 2.80. By Mouse Instead of By Lever programming software hacker_culture
- 2.81. Taste for Makers programming hacker_culture philosophy
- 2.82. The Cult of Done Manifesto programming hacker_culture philosophy
- 2.83. Beating the Averages programming hacker_culture
- 2.84. What science can tell us about C and C++’s security programming
- 2.85. What Clojure spec is and what you can do with it (an illustrated guide) programming
- 2.86. The Unreasonable Effectiveness of Dynamic Typing for Practical Programs programming
- 2.87. Summary of 'A Philosophy of Software Design' programming philosophy
- 2.88. Effective Programs programming philosophy
- 2.89. A Case for Feminism in Programming Language Design programming philosophy
- 2.90. How To Become A Hacker programming hacker_culture
- 2.91. Stop Writing Dead Programs programming software
- 2.92. The Unix-Haters Handbook programming software
- 2.93. The problematic culture of “Worse is Better” programming philosophy software
- 2.94. On Ada’s Dependent Types, and its Types as a Whole programming
- 2.95. Typed Lisp, A Primer programming
- 2.96. The Safyness of Static Typing programming
- 2.97. The Property-Based Testing F# Series, Parts 1-3 programming
- 2.98. Semantic Compression, Complexity, and Granularity programming
- 2.99. Literature review on static vs dynamic typing programming
- 2.100. Execution in the Kingdom of Nouns programming
- 2.101. TODO Design By Contract: A Missing Link In The Quest For Quality Software programming
- 2.102. Complexity Has to Live Somewhere programming
- 2.103. TODO Common Lisp: the Language, 2nd Edition (plus a guide on how to modify it to be up to date with ANSI) programming
- 2.104. A Road to Common Lisp programming philosophy
- 2.105. The epistemology of software quality programming philosophy
- 2.106. Maybe Not programming philosophy
- 2.107. Hackers and Painters programming philosophy
- 2.108. Technical Issues of Separation in Function Cells and Value Cells programming history
- 2.109. EQUAL programming history
- 2.110. Ethics for Programmers: Primum non Nocere programming software philosophy anarchism
- 2.111. The Perils of Partially Powered Languages and Defense of Lisp macros: an automotive tragedy programming
- 2.112. Functional Programming Doesn’t Work (and what to do about it) programming
- 2.113. What We've Built Is a Computational Language (and That's Very Important!) programming software philosophy
- 2.114. Proofs and Programs and Rhetoric programming philosophy
- 2.115. Why Skin-Deep Correctness – Isn't, and Foundations Matter. programming software philosophy
- 2.116. Intro, Part II. programming software philosophy intelligence_augmentation
- 2.117. Of Lisp Macros and Washing Machines programming software philosophy
- 2.118. The Horrors of Static Typing programming
- 2.119. Leaving Haskell behind? programming
- 2.120. The Art of Lisp & Writing programming literature philosophy
- 2.121. Engelbart's Violin software programming
- 2.122. You have made your bedrock, now lie in it. software
- 2.123. Where the Unix philosophy breaks down software
- 2.124. The Nature of the Unix Philosophy software
- 2.125. Lisp Operating System software
- 2.126. Evolutional Steps of Computer Systems software
- 2.127. Seven Laws of Sane Personal Computing software philosophy hacker_culture
- 2.128. TWISTY LITTLE PASSAGES: An Approach to Interactive Fiction software fiction literature hypermedia
- 2.129. Terminal boredom, or how to go on with life when less is indeed less software philosophy
- 2.130. "Ethical software" is (currently) a sad joke software philosophy anarchism
- 2.131. Maximalist Computing software philosophy anarchism
- 2.132. Civilisation, Primitivism and Anarchism anarchism
- 2.133. Nice Shit for Everybody anarchism philosophy
- 2.134. Existentialism is a Humanism philosophy
- 2.135. What’s wrong with CS research programming philosophy
- 2.136. Required reading for transfeminine people entering queer feminist spaces
- 2.137. Post-Left vs “Woke” Left anarchism post_left
- 2.138. Post-Left Anarchy anarchism philosophy post_left
- 2.139. No Treason. No. VI. The Constitution of No Authority (1870) anarchism
- 2.140. The Lisp "Curse" Redemption Arc, or How I Learned To Stop Worrying And Love The CONS programming hacker_culture anarchism
- 2.141. Why Market Exchange Doesn’t Have to Lead to Capitalism anarchism economics
- 2.142. Corporations versus the Market; or, Whip Conflation Now anarchism economics
- 2.143. The Network: A Parody of the Discourse anarchism economics parody
- 2.144. Harrison Bergeron fiction
- 2.145. Software and Anarchy anarchism programming software
- 2.146. The Anti-Human Consequences of Static Typing programming
- 2.147. The Use of Knowledge in Society anarchism economics
- 2.148. THe Modern Business Corporation versus the Free Market? anachism economics
- 2.149. Fandom, purity culture, and the rise of the anti-fan
- 2.150. Revealed Preference: A Parable anarchism economics
- 3. Other philosophy and technology books on my (long-term) reading list
1. Introduction
I've chosen to host a large selection of writings about philosophy and my craft on this website, usually writings that I'm very interested in reading, or writings that I have read and that have deeply influenced me, or that state things I'd otherwise have to write myself, but which say them well enough that I might as well just point to them and let them do the work for me (no need to work more than necessary). This is for philosophical reasons, but also some practical ones – bookmarks are all well and good, but it's nice to have everything in one stable and reliable place, all in one general format (I apply pandoc to all of them to generate a sort of "reader mode" version of each page), and it's nice to have a place to locate all my thoughts on things I've read.
Some of these sites, such as The Cyberpunk Project, The Jargon File, and The Symbolics Museum are, instead of particular writings that have effected me deeply, collections of writings that might disappear at any time that I think it is important to preserve because they're relevant to cultures I deeply identify with, and some constituent writings have influenced me. There are also some things that fall into a gray area here, such as Instead of a Book, Collected Writings of Renzo Novatore, or The Cathedral and the Bazaar: Collected Essays, where I've read most but not all of them, and plan to circle back in the future.
In some cases I've even painstakingly converted two-column PDF (an annoying format if there ever was one!) to text-only (with descriptions of the missing images where necessary) plain HTML for easier accessibility (in all senses), or I've spent a lot of effort making a website more readable. I've decided to host these on my website so I can access them from everywhere!
Here is the list, in alphabetical order, with some thoughts on each:
2. Mirror List
2.1. God is Evil, Man is Free anarchism philosophy religion
Fiery, provocative, dense, sometimes somewhat difficult to read, but also an intelligent, clear-sighted, and funny, and nuanced critique of the common idea of the Christian God from Proudhon. I really enjoy reading this every so often.
2.2. The Cathedral and the Bazaar: Collected Essays anarchism philosophy hacker_culture history
Eric S. Raymond's essays before his Hoppean turn are quite excellent in many ways. Erudite, playful, widely-read, and unusual examinations of hacker and open source culture often laced with references to anarchist ideas and works and immersed in that lens. The bazaar, like Mob Software, is a utopian vision, but I think one worth aspiring to.
2.3. TODO Free as in Freedom: Richard Stallman’s Crusade for Free Software anarchism hacker_culture history
Richard Stallman the man is… far from perfect (links in order of massively descending severity), but his history as a champion of free software that isn't willing to sell out to corporate interests, and much of the software he created and improved, are very important, so this book seems well worth reading. Hopefully it will paint a complex picture, instead of being a hagiography.
2.4. TODO THE HACKER CRACKDOWN: Law and Disorder on the Electronic Frontier anarchism hacker_culture history
This book is written by one of the cyberpunk greats, about a clash between the free and anti-authoritarian hacker subculture and the government, inspired everything Cory Doctorow now does and believes (according to him!), covers the reason for the foundation of the EFF, and guest stars Steve Jackson Games (creators of GURPS, the Emacs of TTRPGs). I really need to read this!
2.5. TODO Seeing Like A State: How Certain Schemes to Improve the Human Condition Have Failed anarchism economics philosophy
This is another one I haven't read, but the ideas about the impossibility of top down planning and modernist totalizing systems from which have percolated already deeply into my head from other things I've read. I look forward to reading it.
2.6. The Stigmergic Revolution anarchism economics hacker_culture
A short essay explaining a form of organizing that is beyond mere decentralization, that is completely individual and distributed, yet still coordinates to get things done – the ultimate holy grail for individualist anachists. Talks about examples in nature, and in our society (has some overlap with The Cathedral and the Bazaar, but from the other side of the glass so to speak).
2.7. Anarchism as a Spiritual Practice anarchism religion
I am not spiritual in the traditional sense. I do not believe in the supernatural, or gods, or goddesses, or enjoy spiritual traditions, practices, or ceremonies, or go on drug trips. I don't adhere to a religion. Insofar as I have a religion (in the broad sense some mystics use it to mean, as in "any set of life practices inspired by a historical tradition that touches on the moral and axiological dimensions of life") then, as this essay says, anarchism is my religion. This essay is a really well-written piece exploring what that means, with some help from philosophical Taoism, which I'm also very sympathetic to.
2.8. Toward the queerest insurrection anarchism queer
A passionate manifesto that I have only felt more as time has gone on speaking out against LGBTQ assimilationism, against the urge to become legible, and speaking to all the ways in which the Queer is at odds inherently with the system we live under. It has deeply influenced how I see what the goals and approaches of queer life and organizing should be.
2.9. The Union of Egoists anarchism philosophy
An in-depth description of and elaboration of a secondary, but extremely useful, concept from Stirner's work, as above, but this time regarding the idea of the "union of egoists." This essay deeply shapes my ideas about how social life and organization should work, or at least how I wish it could.
2.10. The Gift Economy of Property anarchism philosophy
An interesting intellectual play, coming from property rights from another angle.
2.11. The Anatomy of the Encounter anarchism philosophy
Shawn's explications of Proudhonian anarchist/libertarian socialist theory are always deeply interesting and enlightening, providing me with new concepts in my intellectual toolkit. His work on the anarchic encounter, a sort of Crusoe-economics look at the ideal anarchistic social relations that can be used to guide our practical interactions and organization, but also our conceptions of justice, is some of the most enlightening. In this essay, he introduces that concept.
2.12. Polity-form and External constitution anarchism philosophy
Two more excellent conceptual tools that I make use of often, although often not with those exact terms, explored by Shawn. I initially picked up these ideas from other scattered bits in other essays of his, but this glossary entry really brings it together well, after having read through it, as long as you're willing to carefully read every line (it's densely packed with ideas).
2.13. From Whence Do Property Titles Arise? anarchism philosophy
An account of how mutualist property titles might arise from anarchist conditions and concerns, as a defense of market anarchism from communist anarchists.
2.14. Constructing an Anarchism: Collective Force anarchism philosophy
"The basic idea is that the things that we do together with others do not simply add up, but that specialization and association bring about the formation of unity-collectivities, social beings with qualities, strengths and perhaps even ideas that arise from the combination and unification of the constituent beings."
Perhaps the most useful conceptual tool from Proudhon by way of Shawn that I've seen, besides the anarchic encounter.
2.15. TODO Communism Unmasked anarchism philosophy
A highly entertaining, very egoist critique of Marxism that shares many of the issues I have with it. Take it with a grain of salt of course, since it isn't the most rigerous out there, but definitely worth at least poking around and reading sections of!
2.16. TODO Anarchists Against Democracy In Their Own Words anarchism philosophy
Some modern anarchists seem to worship democracy. Most liberals do. This is a collection of criticisms of it from most major anarchists.
2.17. The Anarchic Encounter: Economic and/or Erotic? anarchism philosophy jobs
In this essay Shawn expands on the notion of the anarchic encounter to talk about its possibilities – what can be born out of it. It's interesting and inspiring.
2.18. TODO My Disillusionment in Russia anarchism history
A classic anarchist text that I really need to read soon considering I'm surrounded by damned Marxists.
2.19. Anarchy in the U.K. anarchism history
A great short little article walking through all the ways people have protected themselves in each other without the state historically in England. While none of these ways are close to perfect, they show that there are alternatives to the state that have worked in the past.
2.20. The Right to Self-Treatment anarchism economics
A vision for how medical care could be made radically more decentralized and accessible, without falling into the trap of single payer healthcare:
Finally: I object strenuously to those who see a single-payer system, or a government-controlled delivery system like the UK’s National Health, as the solution. I’d like to give those who talk about healthcare being a “right” the benefit of the doubt, and assume they just don’t understand the implications of what they’re saying. But when you talk about education, healthcare, or anything else being a “right,” what that means in practice is that you get it in the (rationed) amount and form the State wants you to have, and buying it in the form you want becomes much more difficult (if not criminalized). It means the providers of the service will be cartelized, and that the provision of the service will be regulated according to the professional culture and institutional mindset of the cartels. As with “public” education, “public” healthcare means that the existing “professional” institutional culture is locked into place, but that you get their services at taxpayer expense.
Making something a “right” that requires labor to produce also carries another implication: slavery. You can’t have a “right” to any good or service unless somebody else has a corresponding obligation to provide it. And if you’re obligated to provide a good or service at a cost determined by somebody else, you’re a slave. Nobody is born with a “right” to somebody else’s labor-product: as Lilburne said, nobody is born with a saddle on his back, and nobody is born booted and spurred to ride him.
2.21. Scratching By: How Government Creates Poverty as We Know It anarchism economics
An exposition of how the government takes away options that poor people would have otherwise had for supporting themselves and caring for each other, or criminalizes them, making poverty much more terrifying and dangerous and difficult than it would otherwise have to be. None of these options the government takes away are ideal, of course – some are dirty, or fire-prone, and so on, which is the guise under which the government steals them away – but they are better than jail, constant repossession of your belongings and destruction of your shelter, starvation, beatings, or death, and often better than helpless reliance on a centralized bureaucratic state organization that doesn't have to care about you and uses the money of other people who themselves don't personally care about you (and is thus incentivized to skimp on helping you).
2.22. Labour Struggle in a Free Market anarchism economics
An explanation of how, in a free(d) market world, workers are powerful and have many options for collectively fighting back against exploitation, but these days they have been castrated by government regulation much more than they have been superficially "helped." Useful for those worried about worker's rights in a market anarchist society.
2.23. Liberatory Community Armed Self-Defense: Approaches Toward a Theory anarchism
The best exposition in one place I've found of how to actually go about defending your community with arms that wouldn't just lead to a militia or something. Worth reading for all anarchists.
2.24. Instead of a Book, by a Man Too Busy to Write One: A Fragmentary Exposition of Philosophical Anarchism anarchism
Benjamin Tucker was one of the very first and most influential individualist anarchists, and many of his essays – which this book collects – are excellent and well worth reading, as well as being immensely influential on me. Obviously he has his rough spots (I haven't read most of Instead of a Book yet), and I'm sure personally he probably had many reprehensible beliefs as a man of his time, but the man is not what's important to me.
My favorite essays in here are:
- State Socialism and Anarchism
- Socialism: What It Is
- The Relation of the State to the Individual
- Armies That Overlap
2.25. Bloody Rule and a Cannibal Order! anarchism
A very thorough, in depth, and well-reasoned argument against moralist anarchists from the perspective of a Stirnerite – both that morality is not inevitable from a sort of enlightened egoism, and that it is not necessary to be anarchist.
2.26. Confiscation and the Homestead Principle (1969) anarchism philosophy economics
One of the few essays by Rothbard that, even after my move away from anarcho-capitalism, I still really like, probably because its from the time when he was courting the New Left, instead of trying to create a paleoconservative form of "libertarianism," and so its ideals and projects are more compatible with mutualist ideas. In this case, he advocates for the giving of public propery, and any property gained through state violence, expropriation, or funding, to the people that actually occupy, use, and maintain it!
2.27. Anarchy without Hyphens (1980) anarchism philosophy
An eloquent, concise statement of the idea that anarchism means a rejection of any imposed authority, and nothing more. It is "the hammer that smashes the chains" but it does not dictate what we should do after, in the space created by that smashing, except that it should not impose authority. Everything else is up to us. And any ideology that dictates one specific way of organizing "after anarchy has come" (whatever that means) is simply not really anarchism, but something else, like communism.
2.28. In Defense of Public Space anarchism philosophy economics
A defense of public commons against more propertiarian arguments (based on the tragedy of the commoons) against it, and a gesture at why public commons are a very necessary corrective against the ways in which everything being private space could curtail autonomy. Useful as a critique of Hoppeans.
2.29. Simple Sabotage Field Manual anarchism direct_action
Most manuals on how to take direct actions like sabotage suggest things that are actively dangerous, either to the person doing it, or the innocent people around, or both, and/or can have very serious lasting consequences if you're detected. Many are also of doubtful efficacy, no matter how satisfying they may be (such as Molotoving some Starbucks or Walmart somewhere, or setting a few cop cars on fire). All of these have their place in a complete, well rounded diversity of tactics – even the ones that are only of propagandistic or symbolic value – but for most people, who have lives to lose and are generally risk averse (this, unfortunately, includes me, despite my love for Novatore), those manuals aren't particularly useful, except as a sort of performance art in the reading.
This book, however, provides a simple, easy to practice, manual for sabotaging the processes of bureaucracies of various sorts, if you believe that they're up to no good – for instance, if you're part of an arm of a corporation or state that's doing something bad, or an average citizen being roped into e.g. tracking down a criminal – without jeopardizing yourself in any significant way. These methods, while simple and easy, are also relatively effective due to the way hierarchical systems and bureaucracies work.
The classic section:
(11) General Interference with Organizations and Production
(a) Organizations and Conferences (1) Insist on doing everything through “channels.” Never permit short-cuts to be taken in order to expedite decisions.
(2) Make “speeches.” Talk as frequently as possible and at great length. Illustrate your “points” by long anecdotes and accounts of personal experiences. Never hesitate to make a few appropriate “patriotic” comments.
(3) When possible, refer all matters to committees, for “further study and consideration.” Attempt to make the committees as large as possible—never less than five.
(4) Bring up irrelevant issues as frequently as possible.
(5) Haggle over precise wordings of communications, minutes, resolutions.
(6) Refer back to matters decided upon at the last meeting and attempt to re-open the question of the advisability of that decision.
(7) Advocate “caution.” Be “reasonable” and urge your fellow-conferees to be “reasonable” and avoid haste which might result in embarrassments or difficulties later on.
(8) Be worried about the propriety of any decision—raise the question of whether such action as is contemplated lies within the jurisdiction of the group or whether it might conflict with the policy of some higher echelon.
(b) Managers and Supervisors
(1) Demand written orders.
(2) “Misunderstand” orders. Ask endless questions or engage in long correspondence about such orders. Quibble over them when you can.
(3) Do everything possible to delay the delivery of orders. Even though parts of an order may be ready beforehand, don’t deliver it until it is completely ready.
(4) Don’t order new working materials until your current stocks have been virtually exhausted, so that the slightest delay in filling your order will mean a shutdown.
(5) Order high-quality materials which are hard to get. If you don’t get them argue about it. Warn that inferior materials will mean inferior work.
(6) In making work assignments, always sign out the unimportant jobs first. See that the important jobs are assigned to inefficient workers of poor machines.
(7) Insist on perfect work in relatively unimportant products; send back for refinishing those which have the least flaw. Approve other defective parts whose flaws are not visible to the naked eye.
(8) Make mistakes in routing so that parts and materials will be sent to the wrong place in the plant.
(9) When training new workers, give incomplete or misleading instructions.
(10) To lower morale and with it, production, be pleasant to inefficient workers; give them undeserved promotions. Discriminate against efficient workers; complain unjustly about their work.
(11) Hold conferences when there is more critical work to be done.
(12) Multiply paper work in plausible ways.
Start duplicate files.
(13) Multiply the procedures and clearances involved in issuing instructions, pay checks, and so on. See that three people have to approve everything where one would do.
(14) Apply all regulations to the last letter.
2.30. Are We Good Enough? - Peter Kropotkin anarchism philosophy
A classic essay responding to a common question about anarchism. I really like this one. Very useful to send to skeptical people!
2.31. The Myth of the Rule of Law anarchism philosophy
- Law is inherently indeterminate:
- It contains a large amount of diametrically contradicting decisions, cases, precedent, and rules, and anything can be logically derived from conflicting premises
- There is no such thing as language that does not admit of interpretation and reinterpretation, and thus even clearly written law texts can really be understood to mean anything
- As a result, a legal argument can be found for any conclusion, and any conclusion is pretty much as valid as any other, even if they're diametrically opposed. What the law "means," and thus how it is interpreted, argued, and enforced, is totally up to the moral and political beliefs of the individuals doing it.
- Moreover, law is always, universally produced by political actors, who will encode their values into it.
- The apperance of the stability in meaning of the law is merely a product of the stability in the values of those who interpret it, due to social selection processes and indoctrination, and the "meaning" of the law can be seen to change as who interprets it changes.
- Furthermore, law cannot be anything but indeterminate, because if it was completely rigid, absolute, and clear – assuming for a moment such a thing were even possible, which it isn't – then, while it would be able to mete our order, it wouldn't be able to mete out justice, because it wouldn't be able to take into account context, individual cases, and complex human values.
- Law cannot be anything but indeterminate, also, because it is a monopoly product, produced by the state and provided one-size-fits-all for everyone, so it has to be flexible enough to make that at least a little feasible. (This rather nicely and summarily puts to bed Rothbard's project in The Ethics of Liberty)
- Most Americans are clearly both aware that there is no such thing as the "rule of law, not people" in how they jockey for control of law, but at the same time seem to believe in it. This cognitive dissonance is because the myth of the rule of law is otherwise emotionally useful. Namely, because it naturalizes law, as being neutral, objective encodings of justice, and thus part of the natural social order, which:
- allows people deniability when they enforce their values, or the dominant social values they don't want to have to stand against, on others
- enables people to view their moral positions, as filtered through their construction of the meaning of the law, as neutral, objective, and necessary, and their oponents' interpretations as biased and politically-motivated
- Americans also subscribe to this idea because it has been indoctrinated into them by the state. It is convenient for the state for people to believe in the rule of law because then people are more willing to submit themselves to it, and make others submit to it.
- If we stop viewing law as something that must be supplied centrally, we can avoid the problem of one-size-fits-all law, and difficult to interpret law, and power structures around law.
2.32. Anatomy of the State anarchism philosophy
Despite my many disagreements with Rothbard, my revulsion with his paleoconservative turn, and my even greater disagreements with his intellectual heirs such as Hoppe, some of his writings are quite good. This is one of them. There are, of course, areas where I'd refocus his analysis, listed below, but in general it's very good, and I recommend reading it, just taken with a good-size grain of salt.
Some areas where I'd change what he said if I was writing it include (but aren't limited to):
- his belief that the greatest evil and aggression of the state is the invasion of private property is laughable,
- his confusion of capitalism with simply free(d) market cooperation such that he thinks states are "anti-capitalist" is fucking hilarious,
- he cites John C. Calhoun pointing out that a constitution and bill of rights means nothing if those governed by a state so "bound" cannot directly enforce those rights against that state somehow, or nullify violating state laws, and if the state is "a judge in its own case" regarding whether it's adhering to them, and then points out quite astutely that Calhoun's solution to this only protects individuals from federal, but not state, encroachment. He doesn't bother to realize why that is the case – that it's very convenient for a racist slaver "philosopher" to suggest a system where the federal government's laws can be blocked, but the states can do whatever they like
2.33. The Politics of Obedience: The Discourse of Voluntary Servitude anarchism philosophy
Classic quote from this work:
When not a hundred, not a thousand men, but a hundred provinces, a thousand cities, a million men, refuse to assail a single man from whom the kindest treatment received is the infliction of serfdom and slavery, what shall we call that? Is it cowardice? Of course there is in every vice inevitably some limit beyond which one cannot go. Two, possibly ten, may fear one; but when a thousand, a million men, a thousand cities, fail to protect themselves against the domination of one man, this cannot be called cowardly, for cowardice does not sink to such a depth, any more than valor can be termed the effort of one individual to scale a fortress, to attack an army, or to conquer a kingdom. What monstrous vice, then, is this which does not even deserve to be called cowardice, a vice for which no term can be found vile enough, which nature herself disavows and our tongues refuse to name?
[…]
Poor, wretched, and stupid peoples, nations determined on your own misfortune and blind to your own good! You let yourselves be deprived before your own eyes of the best part of your revenues; your fields are plundered, your homes robbed, your family heirlooms taken away. You live in such a way that you cannot claim a single thing as your own; and it would seem that you consider yourselves lucky to be loaned your property, your families, and your very lives.
All this havoc, this misfortune, this ruin, descends upon you not from alien foes, but from the one enemy whom you yourselves render as powerful as he is, for whom you go bravely to war, for whose greatness you do not refuse to offer your own bodies unto death. He who thus domineers over you has only two eyes, only two hands, only one body, no more than is possessed by the least man among the infinite numbers dwelling in your cities; he has indeed nothing more than the power that you confer upon him to destroy you.
Where has he acquired enough eyes to spy upon you if you do not provide them yourselves? How can he have so many arms to beat you with if he does not borrow them from you? The feet that trample down your cities, where does he get them if they are not your own? How does he have any power over you except through you? How would he dare assail you if he had not cooperation from you? What could he do to you if you yourselves did not connive with the thief who plunders you, if you were not accomplices of the murderer who kills you, if you were not traitors to yourselves?
You sow your crops in order that he may ravage them; you install and furnish your homes to give him goods to pillage; you rear your daughters that he may gratify his lust; you bring up your children in order that he may confer upon them the greatest privilege he knows — to be led into his battles, to be delivered to butchery, to be made the servants of his greed and the instruments of his vengeance; you yield your bodies unto hard labor in order that he may indulge in his delights and wallow in his filthy pleasures; you weaken yourselves in order to make him the stronger and the mightier to hold you in check. From all these indignities, such as the very beasts of the field would not endure, you can deliver yourselves if you try, not by taking action, but merely by willing to be free.
Resolve to serve no more, and you are at once freed. I do not ask that you place hands upon the tyrant to topple him over, but simply that you support him no longer; then you will behold him, like a great Colossus whose pedestal has been pulled away, fall of his own weight and break into pieces.
This is a very old essay – written in 1577 – but the bulk of it is still as relevant as it was back then. The core points are these:
- Tyrants/rulers always hold sway over a group far vaster than them, such that they could never hope to actually enforce their will over those they wish to dominate if those people simply ignored their authority and refused to obey. (Part I)
- So how do tyrants hold sway over the populace that they could not otherwise control?
- People have a tendency to ideologically naturalize what is now as what has always been, and what must necessarily be, so people are passive and apathetic.
- People tend to follow tradition, so once more than a generation has passed since rule was instituted, most go along with it by default.
- Human beings adapt to, are shaped and molded by, the conditions under which they grow up; when one grows up under tyranny, one becomes so moulded by it that resistence to it is nearly impossible, not least because one doesn't know what liberty was like, and so doesn't know what they're missing out on well enough to fight tooth and nail for it.
- Nobody knows anyone else is discontented, or if they know that, how truly committed they are (because you'd have to know someone's heart of hearts to know that), so we're all locked in – although he didn't put it in these terms – a Prisoner's Dilemma, unable to do anything because we think we're alone.
- Through the classic bread and circuses which distract us from their tyranny, and make us feel as though they're generous even when the wealth they're sharing with us is stolen from us in the first place.
- Through intimidation of the few people who manage to overcome the former points and resist.
- And how does the tyrant get people who are willing to enforce its will? Merely by promising them a share in the spoils, and to abuse people in turn just as they are abused. For some, that is enough.
- However, aligning yourself with tyrants is always a dangerous game, since they're basically inherently unaccountable, being at the top of a hierarchy.
2.34. Schismatrix Plus fiction literature
"Schismatrix is a creeping sea-urchin of a book – spikey and odd. It isn't very elegant, and lack bilateral symmetry, but pieces break off inside people and stick with them for years" – Bruce Sterling
I'm not exactly sure why I put this one here. I've read a lot of cyberpunk, hard science fiction, and trans/posthumanist literature that has influenced my writing more – much of it is hosted on The Cyberpunk Project, too. But something about this book just sticks in my brain more than the others. This sense of posthuman anti-social loneliness; the depiction of a society that fractures along the lines of different types of posthuman; the investigation of those different approaches to posthumanism; the depiction of accelerating societal change and complexity. I don't know. Of all the cyberpunk works, I feel like this one has given me the most to think about.
- Found a good review of it here
2.35. Hackers: Heroes of the Computer Revolution hacker_culture anarchism
Out of all the books I've read, this one has had one of the largest and most lasting impacts, changing how I view my primary career and hobby, and who I want to be. Yes, the hackers were imperfect – sexist, gross, often somewhat myopic – but their ethos as explained by Stephen Levy, their passion, it's so much of what I want to be. And I think stealing and imitating the good of the past, and discarding the bad, is the best thing we can do. This book is also just entertaining and fun to read, and will teach you a lot about computer history, so it's worth it. I'm still obsessed with the MIT AI Lab to this day.
2.36. TODO The Jargon File (version 4.4.7) hacker_culture history
This is the closest thing you'll find to an ethnography of the hacker culture and community as a whole, as well as a treasure trove dictionary of funny terms with curious historical baggage. I want to incorporate more of these terms into my language.
2.37. Initial GNU Announcement hacker_culture history
This is mostly of historical interest.
2.38. Crypto: How the Code Rebels Beat the Government - Saving Privacy in the Digital Age hacker_culture history
As someone who's deeply interested in digital privacy and security rights, and deeply opposed to government surveilance and legibility, this was an inspiring book when I read it. It's been many years though and I'm not sure how it holds up. Hopefully well.
2.39. Common Lisp: The Untold Story hacker_culture history
A fun little historical paper documenting one perspective of how Common Lisp got standardized. I really like the focus on how human factors influenced the direction and completion of the project, not just technical ones.
2.40. The Bipolar Lisp Programmer hacker_culture
A sympathetic, but critical, portrait of a certain type of anti-social, cynical, intelligent, yet often distracted and unable to complete things, individual, which is often attracted to Lisp, because of its ability to allow single isolated individuals to be extremely productive by themselves, and its ability to be molded into the shape of the mind of the person using it, instead of them having to compromise and bend their mind to it.
I reread this essay often because I strongly see myself in it – even in the ultimate fate it describes, and I have complex feelings about that. I like who I am. My anti-social nature, my individualism, my ambitious but never-finished projects. I don't even mind that I may not ever work in the software industry – for someone who loves hacking as much as I do, perhaps that's for the best. But it's useful to remember that this isn't the most productive outcome either. Something like the Cult of Done manifesto may help me to at least finish more things.
As a general critique of the Lisp community, the thing is that this sort of issue can – as I intend to do – be corrected for, and modern Common Lispers actually seem very good about trying to work together and build useful libraries for others and so on.
2.41. The Cyberpunk Project hacker_culture
"A cyberspace well of files, related to those aspects of being, formed by (post)modern life and culture."
An absolute fucking beautiful treasure trove of carefully curated, found, and organized texts from the era of the 2000s cyberpunk culture and the things that influenced it. Much of this is impossible to find anywhere but the place this is a mirror of, which is why I'm carefully and lovingly trying to keep a copy safe.
The Cyberpunk Project hosts a few texts that have been extremely influential on me:
2.41.1. Cyber + Punk = Cyberpunk
So, words 'cyber' and 'punk' emphasize the two basic aspects of cyberpunk: technology and individualism.
Meaning of the word 'cyberpunk' could be something like 'anarchy via machines' or 'machine/computer rebel movement'.
Cyberpunk focuses on these people, these 'lovers of freedom' who often use the ultratechnology designed to control them to fight back. The story lines usually bend toward the world of the illegal and there is often a sense of moral ambiguity; simply fighting the 'system' does not make these characters 'heroes' or 'good' in the traditional sense.
2.41.2. Declaration of the Independence of Cyberspace
An inspiring declaration of the awe-inspiring, radical potentiality contained within cyberspace (the internet), although perhaps not what it actually is, thanks to the centralization into surveillance captialist platforms that we've been seeing due to the unconscious, herd-following behavior of most people who, late-comers and part-time inhabitants of cyberspace, don't understand what it truly offers us – a distributed, post-scarcity "world of the Mind" and are unwilling to take up the responsibility of learning how to navigate such a world, and the "colonial forces" of those "weary giants of flesh and steel" (governments and coporations) who, through laws and copyright and DRM, make the terraforming of cyberspace for the convenience of vacationors to our home possible.
This piece's strong declarations of the impossibility (in addition to the undesirability) of ruling cyberspace may seem unjustified given the fact that cyberspace, ultimately, is made possible by physical infrastructure, and visited by physical people. But I think it is justified: that infrastructure, no matter how industrial and physical, by virtue of the nature of internet protocols and the work of cypherpunks, can carry any traffic anywhere without being traced if you know how to ride the signals right – so as long as you can access the internet at all, you can get anywhere. And yes, that access itself could be limited or completely dismantled, like in places such as North Korea, but that is exactly what the Declaration is responding to: it is saying more "do not fucking do this" than "you physically cannot do this at all, if you try hard enough."
2.41.3. The Hacker's Ethic
While hackers, as they existed in the past and do exist today, rarely live up to this ethos completely – it implies a radical inclusivity and acceptence of diversity that they often struggle to mirror – and it is not an complete ethic of life in itself, I think the ideas and principles behind it are supremely good, and worth emulating and expanding upon. In many ways, it guides my life.
- Access to computers – and anything which might teach you something about the way the world works – should be unlimited and total. Always yield to the Hands-On imperative!
- All information should be free.
- Mistrust authority - promote decentralization.
- Hackers should be judged by their hacking, not bogus criteria such as degress, age, race, or position.
- You can create art and beauty on a computer.
- Computers can change your life for the better.
2.42. What is wrong with Lisp? hacker_culture programming
Many people over many decades have speculated as to what's "wrong" with Lisp, such that it hasn't reached widespread industry adoption despite its many technical merits. Most of them are superficial, ahistorical, and anti-intellectual. This article explains concisely why: that Lisp, being very different from the mainstream (but, to add my own component to the analysis, in a way that is not governed by a modernist narrative like languages such as Haskell), attracts people who want to justify their desire not to have to bother to learn it, who come up with post-hoc justifications for that framed as criticisms of the language, to shift the blame. This creates a mythology of Lisp being bad that scares people away. This, combined with TBLP phenomenon, seems accurate to me.
2.43. My Lisp Experiences and the Development of GNU Emacs hacker_culture
A very interesting oral history from RMS, about exactly what it says. Has a somewhat distorted view of the reasons things happened but as a look at what RMS thinks happened, and thus what motivated Emacs and GNU, it's great.
2.44. Language, Purity, Cult, and Deception hacker_culture programming
Xah Lee is wrong about as often as he's right, but when he's right he's right. Languages that focus on meaningful practicality within their domains are better than languages that get preoccupied with their own beauty – better culturally, and more useful.
2.45. The Structure of a Programming Language Revolution hacker_culture programming history
Not only is this an incredibly well-written, lyrical, and erudite paper written about a fascinating transition point in the history of programming, but it articulates a fundamental rift between how modern programming language theory (and computer science in general) views programming languages and tools, and how actual working programmers and system builders view them, a rift which I think articulates well the utter dissapointing lack I see in computer science as a whole.
2.46. Symbolics Museum history software
A rare, curated, one-of-a-kind collection of information and resources about the utlimate Lisp Machine OS, Symbolics Genera. The lost Atlantis of operating systems! Some good places to start with this are:
2.46.1. Genera Concepts
A high level, but very detailed, dense, and interesting, summary of the properties and concepts of the Genera operating system. Read every sentence! A lot of important details could slip past if you skim.
Some described properties are no longer unique, some remain very unique, such as the lack of distinction between the operating system and user applications – the operating system is just a library, and all storage is a pool of Lisp objects, references to which can be just directly passed around between programs (which are just functions you call, or larger libraries of such functions).
2.46.2. Symbolics Technical Summary
An even shorter and higher level overview than Genera Concepts, but includes more specific technical and historical information, especially about the hardware and surrounding software. Best to be read in conjunction with the above to get a sense of the specifics.
2.46.3. The Lisp Machine Software Development Environment
This is a compilation of screenshots of the various programs available within Genera. Useful to get an idea of what the system actually looked like in use.
2.46.4. Symbolics Manuals
A collection of 44 complete manuals from the Symbolics Genera system. If you want all the gory technical details, this is the best place to dive in!
2.46.5. Symbolics Lisp Machines Demo by Kalman Reti
An in-depth demo of the capabilities of the Symbolics Lisp Machiens by the last Symbolics employee.
2.47. How to think in writing intelligence_augmentation
An excellent article about how to enhance your ability to think using writing, inspired by a book on writing mathematical proofs and the refutations or critiques thereof. The basic points are:
- Set yourself up for defeat. Explain your thoughts in a definite, clear, concrete, sharp, and rigid way, so that they make precise enough statements that they can be criticized and falsified without conveniently slipping and twisting in meaning to meet every new piece of evidence or argument.
- Spread your ideas thin. Take your thought, and treat it as the conclusion of an argument or series of musings. Explain and explore why you think it might be true. This way, there's more surface area to criticize and analyze – instead of having to think things up to attack out of whole cloth, you get a list of things to examine.
- Find local and global counterexamples. Local counterexamples are counterexamples to a single point in the argument for an idea, that nevertheless don't make you doubt the overall truth of that idea. Finding these can help you figure out why you really think something is true, or help you refine your argument. Global counterexamples disprove the whole thought, which obviously helps by making you more correct.
2.48. The Failure of Hyperfiction (1998) literature fiction hypermedia
In the 1990s, when the possibility of hypertext became more widely known, there was a wave of literary theorists in acadamia who hailed hypermedia as an epochal shift in the nature of fiction itself – perhaps, indeed, its final form. They were so sure of this because they saw it as the truest, most concrete fulfillment of critical and post-structuralist theory – freeing the reader from the tyranny of the author and of structure and narrative. They believed that, perceiving this new freedom, hypermedia literature would be embraced by writers, artists, other literary theorists, and the public at large.
Then hypermedia basically died.
This essay explains the reason why: that they were so caught up in their theories that they had been completely divorced from how readers actually understand and experience stories, and specifically narrative, theme, and authorial intent – not as an oppresive imposition to be liberated from, but as the whole point: the whole point is not to impress the ideas you already have on a text, as a post-structuralist does, but to welcome an author's unique voice and ideas into your head and experience something that has been intentionally assembled for you.
2.49. Post Concussion Syndrome: Symptoms, Diagnosis, & Treatment medical personal
A good centralized reference for describing my disability, so I can link to it easily. Summary:
What Causes Post-concussion Syndrome?
Post-concussion syndrome can develop after a mild, moderate, or severe TBI. It can also come from brain traumas like carbon monoxide poisoning, transient ischemic attack (TIA), chemical exposure, certain viral or bacterial illnesses, surgery, and more.
Post-concussion symptoms stem primarily from dysfunctional neurovascular coupling (NVC), which is the dynamic relationship between neurons and the blood vessels that supply them. When you experience a concussion (or any TBI), your immune system causes inflammation near the site(s) of injury. The affected parts of your brain experience a temporary breakdown of tiny structures in and around those cells.
As a consequence, those cells don’t get the right amount of oxygen at the right time to power the signaling your brain normally does. When you try to do something that those cells govern — like encoding a new memory or paying attention to a conversation — they won’t be able to accomplish the task. Other neural pathways will then attempt to complete the process, even though it’s a less efficient path for that information to take.
The result of NVC dysfunction is these hypoactive brain regions that can’t do their fair share of the work. Other brain regions will try to take on more work than they should, but they can’t do so efficiently. This tires your brain out, leading to post-traumatic headaches, feeling overwhelmed, irritability, and other symptoms.
For the majority of people who suffer from a concussion, symptoms usually resolve 3-6 weeks post-head trauma. We assume that’s because the brain goes back to using the best pathways for any given process (although it may just be really good at compensating for the injury). But for post-concussion syndrome patients, the brain keeps using less efficient pathways to complete tasks even after the inflammation has resolved. That suboptimal signaling is what results in long-lasting concussion symptoms.
If suboptimal signaling seems confusing to you, think of it like road traffic. A healthy brain would distribute “traffic” — i.e., the signaling and blood flow dynamics needed for a task like reading — equally along existing pathways. Suboptimal signaling is like getting stuck in a traffic jam or taking a frontage road instead of the highway. It’s inefficient and requires more “gas” to get to the same destination.
The more your brain has to use suboptimal pathways, the more likely you are to experience symptoms.
A concussion may also result in…
- Autonomic nervous system dysfunction (dysautonomia)
- Hormone dysfunction
- Vision problems
- Vestibular dysfunction
These post-concussion complications can produce many of the long-lasting symptoms characteristic of post-concussion syndrome.
Post-concussion symptoms can last for weeks, months, or even years after the concussive event. In general, if your symptoms have not gone away after three months, it’s a good idea to explore treatment options.
[…]
We compiled a list of the most common emotional, physical, and cognitive symptoms of post-concussion syndrome reported by patients:
Emotional Cognitive Physical Anxiety Brain fog Blood pressure changes Depression Difficulty concentrating Change in (or loss of) taste or smell Feeling overwhelmed Difficulty finding things Difficulty balancing Impulsiveness Difficulty reading Dizziness or vertigo Irritability Getting lost Exaggerated startle response Mood swings Long-term memory problems Exercise intolerance PTSD Short-term memory problems Fatigue Social anxiety Slowness to decide, think, speak, or act Feeling anxious without anxious thoughts Teariness GI issues Headache Heart rate issues Intolerance of caffeine or alcohol Light sensitivity Nausea Sexual dysfunction, low libido Shaking or shivering Sleep disruption Temperature irregularities Tension in the neck, jaw, and/or shoulders Tinnitus Vision problems (double vision, blurry vision, tired eyes, etc.)
2.50. Where Lisp Fails: at Turning People into Fungible Cogs. philosophy programming
Looking at the problem discussed in The Bipolar Lisp Programmer from another angle: that the individualism, and invidual productivity, of Lisp is good, and it is the incentives of corporations, who want programmers who are individually easier to replace or do without, and individually less productive and influential, so less risk is invested into them, they're cheaper, and easier to keep in line with the proper workings of the system, that makes the sort of people Lisp enables unable to find jobs.
2.51. The “Stirner Wasn’t A Capitalist You Fucking Idiot” Cheat Sheet philosophy anarchism
Stirner is often accused of being somehow antithetical in principles, values, and tendencies to anarchism. This is bullshit. This will show you why.
2.52. The Question of Copyright philosophy anarchism
This is a great takedown of the idea of copyright from an anarchist egoist perspective. Written in a slightly oldtimey manner and not dealing with any "new developments," but it's funny as hell and the arguments are still sound all these years later.
2.53. The Collected Writings of Renzo Novatore philosophy anarchism
There is perhaps no writer that has influenced me more than the philosopher-poet and Nietzschean/Stirnerian hybrid anarchist Novatore. His writings have a wonderful vitality and strength and life and individuality to them, and a really fun need to strike back with poetic, beautiful, yet vicious anger at the fascists, unconscious egoists and communitarians that would drag us all down. I've read a lot of these, but not all, and I really should reread them. The ones I've read and really liked are:
- Black Flags
- Cry of Rebellion
- Intellectual Vagabonds
- Toward the Creative Nothing
- Anarchist Individualism in the Social Revolution
- My Iconoclastic Individualism
- I Am Also A Nihilist
A quote from Black Flags that seems relevant in our times:
Our time — despite empty and contrary appearances — is already lying on all fours under the heavy wheels of a new History.
The bestial morality of our bastard christian-liberal-bourgeois-plebeian civilization turns toward the sunset…
Our false social organization is collapsing fatally — inexorably!
The fascist phenomenon is the surest, most indisputable proof of it.
In Italy as elsewhere…
To show it, one would only have to go back in time and question history. But even this isn’t necessary! — The present speaks eloquently enough…
Fascism is nothing but a cruel, convulsive spasm of a decaying society that tragically drowns in the quagmire of its lies.
Because it — fascism — indeed celebrates its bacchanals with flaming pyres and malicious orgies of blood; but the dull crackling of its livid fires doesn’t give off a single spark of vivid innovative spirituality; meanwhile, may the blood that pours out be transformed into wine, that we — the forerunners of the time — silently gather in red goblets of hatred setting it aside as the heroic beverage to pass on to the children of the night and of sorrow in the fatal communion of great revolt.
We will take these brothers of ours by the hand to march together and climb together toward new spiritual dawns, toward new auroras of life, toward new conquests of thought, toward new feasts of light; new solar noons.
Because we are lovers of liberating struggle.
We are the children of sorrow that rises and thought that creates.
We are restless vagabonds.
The boldest in every endeavor; the tempter of every ordeal.
And life is an “ordeal”! A torment! A tragic flight. — A fleeting moment!
2.54. Science As Radicalism philosophy anarchism
A deeply cathartic-to-read critique of the misconceptions of science that so many people on the left have, and a defense of its radicalism and its value, against the spiritualists and mystics, from the perspective of someone who actually understands the epistemological and moral objections being made (such as those of Against Method) instead of merely ignoring them.
2.55. Natural Law, or Don’t Put a Rubber on Your Willy philosophy anarchism
A very fun egoist anarchist/moral nihilist takedown of the inane logic of natural law. I tried to get natural law to "work" for like four years before I realized no matter what I did it was always totally arbitrary, or collapsed back into egoism, so it's cathartic to read something like this!
2.56. Hayek, Epistemology, and Hegemonic Rationality philosophy anarchism
This is an excellent article about how Hayeks ideas about science and epistemology and information are essentially a post-structualist critique of the idea that we can analyze and understand society scientifically, but argued clearly and in an analytic way. This is essentially a twin of the essay I eventually intend to write showing how late Wittgenstein aligns closely with the anti-essentialism of the post-structuralist philosophers, but in a way that lends a new perspective and argumentative comprehensibility to them.
2.57. Economic Calculation in the Corporate Commonwealth, Hierarchy or the Market, and Contract Feudalism philosophy anarchism
These essays show clearly and concretely why, if the Austrians were consistent in their critiques of the information, incentive, calculation, and ethical problems of centralization, authoritarianism, and surveillance, they would also have to be anticapitalist. These critiques are excellent and unique in providing excellent efficiency arguments against capitalism that don't rely on ideas about "rational planning."
2.58. The Dispossessed: An Ambiguous Utopia philosophy fiction literature
I've always loved Le Guin's work, but this book in particular has had the biggest impact on me of any of her work, philosophically speaking. I really love how it explores the benefits and drawbacks of her two societies – a rich, decadent capitalist one, and an ascetic, rough anarcho-syndicalist one – without putting her finger on the scale. I think it does an excellent job both of echoing the critiques we all already have of capitalism with more clear-eyed acknowledgement of its benefits, and showing how anarcho-syndicalism fails.
One of the most important ideas put forward in this book is that, even "after the revolution" – after an anarchist society of any description has been achieved – there are still social forces baked into the human psyche that will inexorably seek to undermine nonhierarchical organizing and individual autonomy, and we will have to be constantly vigilant against them. This is important: many leftists seem to think that once the right organizational forms have been achieved, everything is in order – no more needs to be done. Oh, they'll talk about studying and rooting out all sorts of internalized -isms, but they won't ever bother to study and root out the -isms growing in their very organization – only in each other as individuals.
2.59. God Emperor of Dune philosophy fiction literature
This book, for all its faults (the homophobia) is so full of nuggets of wisdom, insight, and prose poetry. Some of my favorite quotes, pulled from Goodreads because my memory of quotes is not exacting:
In all of my universe I have seen no law of nature, unchanging and inexorable. This universe presents only changing relationships which are sometimes seen as laws by short-lived awareness. These fleshy sensoria which we call self are ephemera withering in the blaze of infinity, fleetingly aware of temporary conditions which confine our activities and change as our activities change. If you must label the absolute, use its proper name: Temporary.
“For what do you hunger, Lord?” Moneo ventured. “For a humankind which can make truly long-term decisions. Do you know the key to that ability, Moneo?” “You have said it many times, Lord. It is the ability to change your mind.”
Most believe that a satisfactory future requires a return to an idealized past, a past which never in fact existed.
"The problem of leadership is inevitably: Who will play God?" Muad'Dib
You should never be in the company of anyone with whom you would not want to die.
The difference between a good administrator and a bad one is about five heartbeats. Good administrators make immediate choices. […] They usually can be made to work. A bad administrator, on the other hand, hesitates, diddles around, asks for committees, for research and reports. Eventually, he acts in ways which create serious problems. […] “A bad administrator is more concerned with reports than with decisions. He wants the hard record which he can display as an excuse for his errors. […] Often, the most important piece of information is that something has gone wrong. Bad administrators hide their mistakes until it’s too late to make corrections.
Scratch a conservative and you find someone who prefers the past over any future. Scratch a liberal and find a closet aristocrat. It’s true! Liberal governments always develop into aristocracies. The bureaucracies betray the true intent of people who form such governments. Right from the first, the little people who formed the governments which promised to equalize the social burdens found themselves suddenly in the hands of bureaucratic aristocracies. Of course, all bureaucracies follow this pattern, but what a hypocrisy to find this even under a communized banner. Ahhh, well, if patterns teach me anything it’s that patterns are repeated. My oppressions, by and large, are no worse than any of the others and, at least, I teach a new lesson. —
There has never been a truly selfless rebel, just hypocrites—conscious hypocrites or unconscious hypocrites, it’s all the same.
Dangers lurk in all systems. Systems incorporate the unexamined beliefs of their creators. Adopt a system, accept its beliefs, and you help strengthen the resistance to change
Beware of the truth, gentle Sister. Although much sought after, truth can be dangerous to the seeker. Myths and reassuring lies are much easier to find and believe. If you find a truth, even a temporary one, it can demand that you make painful changes. Conceal your truths within words. Natural ambiguity will protect you then.
Police are inevitably corrupted. […] Police always observe that criminals prosper. It takes a pretty dull policeman to miss the fact that the position of authority is the most prosperous criminal position available.
And my favorite quote of all:
I assure you that I am the book of fate.
Questions are my enemies. For my questions explode! Answers leap up like a frightened flock, blackening the sky of my inescapable memories. Not one answer, not one suffices.
What prisms flash when I enter the terrible field of my past. I am a chip of shattered flint enclosed in a box. The box gyrates and quakes. I am tossed about in a storm of mysteries. And when the box opens, I return to this presence like a stranger in a primitive land.
Slowly (slowly, I say) I relearn my name.
But that is not to know myself!
This person of my name, this Leto who is the second of that calling, finds other voices in his mind, other names and other places. Oh, I promise you (as I have been promised) that I answer to but a single name. If you say, “Leto”, I respond. Sufferance makes this true, sufferance and one thing more:
I hold the threads!
All of them are mine. Let me but imagine a topic—say … men who have died by the sword—and I have them in all of their gore, every image intact, every moan,
every grimace.
Joys of motherhood, 1 think, and the birthing beds are mine. Serial baby smiles and the sweet cooings of new generations. The first walkings of the toddlers and the first victories of youths brought forth for me to share. They tumble one upon another until I can see little else but sameness and repetition.
“Keep it all intact,” I warn myself.
Who can deny the value of such experiences, the worth of learning through which I view each new instant?
Ahhh, but it’s the past. Don’t you understand? It’s only the past!
This morning I was born in a yurt at the edge of a horse-plain in a land of a planet which no longer exists. Tomorrow I will be born someone else in another place. I have not yet chosen. This morning, though—ahh, this life! When my eyes had learned to focus, I looked out at sunshine on trampled grass and I saw vigorous people going about the sweet activities of their lives. Where … oh where has all of that vigour gone?
—The Stolen Journals
2.60. TODO Ontology is Overrated: Categories, Links, and Tags philosophy software
A profound and crucial piece about information organization (crucial in the world of the internet, where information is vast and distributed), and it also applies to many other areas of software, such as its development, where people are tempted to introduce ontologies unecessarily. I haven't read through this as thoroughly as I'd like, so I'm gonna go back to the well soon.
2.61. Inventing on Principle philosophy programming
A really profound talk with two parts: a philosophical one and a technical one.
I'm not sure I agree with the philosophical point, that choosing one purpose to staunchly follow for the rest of your days, to become a true believer in, is the way to a good life – that seems like a fixed idea, and the route to ego death if the idea turns out to be wrong or you change or the world changes around you – but certainly pursuing things you feel passionate about while you are passionate about them, focusing on that passion and even reinforcing it, making strong decisions based on it (and that can last a lifetime) is a great way to live. It's how I try to.
However, the technical part – demonstrating what a truly interactive software system looks like and why it's valuable, is amazing, and really blends well with the Hackers and Painters ideas.
2.62. Ur-Fascism philosophy
A classic text of political philosophy using one of my favorite ideas (the idea of family resemblance). All the more relevant in the modern day.
2.63. The Mentat Handbook philosophy
Guiding principles in life that I follow. Useful to keep in mind for those of us who don't want to become myopic engineers, while still being in a field such as programming.
2.64. Stirner's Critics philosophy
Stirner (in the third person) responds to some criticisms of his philosophical magnum opus. Provides a clearer, shorter, and more accessible elucidation of some of his ideas, and responds preemptively to some critiques one might have. This was my introduction to him, and could well by yours as well!
2.65. Some Thoughts on the Creative Nothing philosophy
The creative nothing is one of the most interesting, and overtly Taoist, ideas that Stirner has – but it is only explicitly discussed in two places in The Unique and Its Property. More can be inferred about it from applying the rest of Stirner's philosophical attitude to the idea, however, and this article takes up that worthwhile endeavor well, as a useful elaboration on that crucial idea.
2.66. TODO Intuition in Software Development philosophy programming
Painstakingly generated from a PDF.
Abstract
A characterization of the pervasiveness of intuition in human conscious life is given followed by some remarks on successes and failures of intuition. Next the intuitive basis of common notions of scales, logic, correctness, texts, reasoning, and proofs, is described. On this basis the essential notions of data models of human activity and of software development, as built on human intuition, are discussed. This leads to a discussion of software development methods, viewed as means to over coming the hazards of intuitive actions. It is concluded that program mers’ experience and integrity are more important than their use of methods.
I haven't read this yet, but given my attitudes toward programming as a trade and a craft, I think it'll be really interesting reading.
2.67. Notes on Postmodern Programming philosophy programming
Fast paced, entertaining, full of creativity and variety, tongue-in-cheek, well written, and containing so many nuggets of wisdom I've learned myself about the nature of programming as an activity that takes place in, and must conform to, the real world. No totalizing narrative works!
2.68. TODO Programming as Theory Building philosophy programming
Abstract
Peter Naur’s classic 1985 essay “Programming as Theory Building” argues that a program is not its source code. A program is a shared mental construct (he uses the word theory) that lives in the minds of the people who work on it. If you lose the people, you lose the program. The code is merely a written representation of the program, and it’s lossy, so you can’t reconstruct a program from its code.
This seems like an extremely interesting paper given my human-focused approach to programming, much like Naur's other, and I'm excited to get around to reading it. It's also important in the context of the high turnover and growing mistreatment of programmers-as-workers in our industry, and the looming threat of (CEOs thinking they can get away with) our replacement with large language models.
2.69. The Unique and Its Property philosophy
The best translation of Stirner's work to date. I wouldn't necessarily say this book has shaped my ideas, so much as it provides an interesting exploration of ideas that I had already come to by myself (moral nihilism, perspectivism, anti-dogma in all forms) as well as a more consistent and very challenging working-out of them, although I find his arguments, when viewed analytically, as somewhat wanting – hence the essays I intend to write arguing for his positions in a more analytic philosophy way.
2.70. Tech Geekers and What is Politics? philosophy hacker_culture
A great takedown of the tendency of many hackers to frame themselves as "apolitical" in Xah Lee's usual inflammatory and sketchy style.
2.71. The Repair Manifesto philosophy anarchism hacker_culture
Short, punchy, clear, envigorating, a call to action – all that a manifesto should be. And it very much aligns with my own commitment to repair being for individualist reasons.
2.72. TODO Property is Theft! A Pierre-Joseph Proudhon Anthology philosophy anarchism economics
Proudhon is a massively underrated, deeply interesting thinker elucidating a form of anarchy that has been lost, but that I think is worth exploring, since it comes from outside the pure social anarchy and Marxist anarchy traditions found today. This reader compiles the most important parts of his otherwise often long and difficult works, including some brand new translations. I haven't read much of his yet, but I really intend to go through this.
2.73. What is Free Software? philosophy hacker_culture anarchism
For all of their faults, Richard Stallman and the Free Software foundation fight for a cause that I believe is deeply just. Free (libre) software is the only software that can truly adhere to the essence and spirit of the core tenets of the programmer code of ethics that I believe in.
The core of free software is contained in the famous four freedoms:
- The freedom to run the program as you wish, for any purpose (freedom 0).
- The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help others (freedom 2).
- The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
As to their faults: while I applaud RMS for his technical abilities and staunch, unwavering support of his ideals, he has many other ideas (and behaviors) that are outright gross and unethical, and many others that just make him a bad spokesperson and figurehead for a movement. His conception of freedom is also somewhat compromised, in that he seems to think that restricting the freedom of users to use proprietary software or hardware, should they choose to do so, by making it more inconvenient, is somehow protecting their freedom – when in reality, freedom includes the freedom to fuck up or do suboptimal things if you have to, and taking such a hardline stance just makes operating systems that take free software principles harder (or impossible) to access and use for many people. He also has weird and arbitrary lines, such as thinking shoving proprietary code into firmware on secondary chips is better than it being at least a blob you can swap out attached to your main operating system. He also has paranoid ideas about the consequences of doing certain things, like opening up GCC so it can be used as a language server risking "companies building proprietary front ends to it," which they wouldn't do – they'd just use clang.
Likewise, at this point, the FSF is an impotent personality cult that cannot meaningfully reach out and address most people where they're at, and doesn't even use its funding to fund development of things like the GNU project, just largely ineffective activism. They also have a tendency to be extremely myopic and "apolitical" in a way that just further excludes diverse people.
But nevertheless, their ideals are good.
2.74. TODO File Structure for The Complex, The Changing and the Indeterminate philosophy software hypermedia
This is the essay that started it all – the one that introduced the concept of hypertext for the first time. Interestingly, its concept of hypertext, which structures documents as a linked list like structure of small sections of content addressed by globally unique identifiers, which could be linked directly to from any other document, or anywhere else inside the document, and which included the concept of transclusion (that is, directly including another document's content into the current document, instead of just linking to it) is both more powerful than our modern notion of hypertext (where anchors and iframes are clunky, manual reinventions of the same ideas), and much more similar to how an org-mode document is structured, at least how I use it!
I haven't actually had a chance to read this essay, only listen to the summary given in the Advent of Computing podcast episode on Project Xanadu, and I'm very intrigued to read more!
2.75. TODO Augmenting Human Intellect: A Conceptual Framework philosophy software intelligence_augmentation
I haven't had a chance to read this either, but I'm very interested in doing so. The idea of consciously constructing computers and computer software that is not just designed to automate or enable certain limited tasks, but to act as a complete solution for augmenting one's intellect is incredibly interesting to me. (There's a reason, after all, this blog is structured the way it is, and I'm as interested as I am in org-mode!)
2.76. TODO Dream Machines/Computer Lib philosophy software intelligence_augmentation hypermedia
Written by the inventor of the concept of hypertext and the creator of Project Xanadu, this is a manifesto for personal computers, specifically personal computers as intelligence augmentation machines and machines for creative, associative thinking and exploration, by an outsider to the world of technology. I'm extremely interested to read it, although it'll be annoying since the only way to get a big enough screen for it to be readable is to read it at my desktop.
2.77. TODO Complexity: A Very Short Introduction philosophy
The field of complexity science seems very interesting, especially coming from the perspective of someone deeply influenced by Proudhonian thinking, which is very big on the emergence of new systems on larger scales from complex and chaotic systems on lower scales; it almost seems like a more scientific and developed verson of Proudhon's Philosophy of Progress. This short introduction (110 pages in print) seems like a good place to get a taste.
2.78. Writes and Write-Nots philosophy intelligence_augmentation literature
Writing is necessary for thinking, but it is also difficult and unpleasant for most people. The ubiquity of large language models decreases the pressure for people to learn how to write and do it a lot. This will likely result in a decline in the quality of thinking people are capable of.
2.79. TODO Philosophical Investigations philosophy
A really interesting text. Although I've only read about as far as section 100, it deeply changed the way I think about language, especially by introducing me to the concept of family resemblance. I really need to finish it someday.
2.80. By Mouse Instead of By Lever programming software hacker_culture
I'm not a fan of Erik Naggum as a whole – his prideful nigh-abusive holier-than-thou attitude and legendary flames probably significantly contributed to the death of the Common Lisp community in the 2000s to some significant degree. However, this is a classic essay. Naggum covers a lot of points, but among them:
- modern computer systems, both for users and for programmers, are so lacking meaningful automation (macros, an efficient, readable, comprehensible, reliable, and interactive way to compose applications that have to work with something more than plain text (and no, UNIX pipes are not interactive)), so full of drudgery and menial work, that we seem to have forgotten that the point of computers is to automate away tasks, instead of "perform menial tasks by mouse instead of lever."
- Because the bedrock abstractions of *nix and Windows are bad, new leaky abstractions have had to be piled up on top of them to make them do the things we need to them to do, and this has made them extremely unreliable and complex.
- The fast-paced, competitive mindset of the modern tech industry is a distortion in thinking: just because something isn't always changing doesn't mean it's dead.
2.81. Taste for Makers programming hacker_culture philosophy
Taste, bought through experience and care for your craft, is important for programming – the massive amount of complexity, unknown unknowns, and the need to interface with the complex, fuzzy, and shifting world make absolute, rote methods impossible, and taste can be a good guiding heuristic the help us get to where we need to go, like in physics and mathematics. However, what does good taste mean? This essay has excellent guidance for us, pulled from the worlds of art, mathematics, engineering, and programming itself:
- Good design is simple
- Good design is timeless
- Good design is suggestive
- Good design is often slightly funny
- Good design is hard
- Good design looks easy
- Good design is redesign
- Good design is often strange
- Good design is often daring
2.82. The Cult of Done Manifesto programming hacker_culture philosophy
If you are a creater or a maker and your craft is your lifeblood, but you struggle to actually do it just the same, this is an excellent manifesto to keep in mind at all times to keep in your heart at all times.
2.83. Beating the Averages programming hacker_culture
Many valid criticisms of this essay have been made over the years. 25% of your codebase being macros is terrifying. Language power is not a single dimention, but multiple, and Lisp is extremely powerful, but not the most powerful language. But despite these criticisms, I think the point of the essay does still stand: macros are extremely useful when you need them, that's pretty manifest from the amount of compiler plugins and codegen Java libraries like Jackson do, which is just a worse and more brittle form of macros; language power may have multiple dimensions, but some languages are just still more powerful across the board, or in sum, or on average, than others (think of a spider graph of language power); Lisp is probably one of the most powerful, considering it can even nearly seamlessly encompass Haskell and APL using macros. There are also responses to some of these critiques: for instance, maybe 25% of Viaweb's final generated codebase was the generated content of macros – indicating how much time was saved, not how often they were used strictly speaking – instead of 25% of its pre-compilation codebase being macro definitions, for example.
2.84. What science can tell us about C and C++’s security programming
Empirical results are painfully rare in computer science. But, as this blog post covers, we have many extremely strong real world pieces of evidence to conclude that memory safe languages are horribly unsafe, and that human beings are not up to the task, no matter how good they are, of avoiding memory unsafety. This is why (concurrent) garbage collection should be built in at the lowest levels of our systems as possible, and everything that needs real time reliability or needs to be lower level than that should use automatic reference counting or borrow checking.
2.85. What Clojure spec is and what you can do with it (an illustrated guide) programming
An incredibly powerful demonstration of what's essentially an advanced structural type system combined with a randomized property-based testing system can do for you. It really opens your eyes to what can be done to verify the correctness of programs even without static types. It seems much more powerful, flexible, and expressive than all but something like Idris, let alone model checking (which do basically the same thing but destroy having a single source of truth for your application logic) and almost for free in terms of cognitive overhead!
2.86. The Unreasonable Effectiveness of Dynamic Typing for Practical Programs programming
(Used Whisper to make a transcript on my local computer, edited it a bit. If you wanna see the slides, watch the video.)
This talk obviously made a lot of static typing proponents angry. The speaker was accused all over the internet of not understanding what static types are, or why they're useful. But I actually think he's completely right.
The criticism that he didn't use F#'s type system to its fullest potential to avoid the lapse in correctness he demonstrated in its unit typechecking is beside the point – he was illustrating a general point that static types generally indicate structure and the presence or applicability of certain operations, but not the specific context and intent of the value in question. That's why he goes on to talk about how much munging of strings and JSON and so on we have to do every day – those are also largely structural types that don't encode actual meaning or intention or context. And this is absolutely true in the general case.
And of course, yes, you could use type systems to encode these things if you try much harder (the point is that they don't by default), including a million newtypes and phantom type parameters everywhere, but then you just fall into the second horn of his argument, namely that the development costs, and the costs to flexibility and modularity of software, in using types that rigid (even assuming a good language like F# that can make the types to do this reasonably simple) probably outweigh whatever benefits it might have.
The other criticism is insisting that types can catch more than those 2% of Type Errors. But can they really? Unless you're doing extremely hardcore data driven design all ML-style types really offer you is some assurances about structure and applicable operations, polymorphism, and exhaustiveness checking. The first two are TypeError-related things. The final one is reasonably easy to remember to do on your own and usually annoying unless you're using custom ADTs absolutely everywhere. (I still like it though, because I'm forgetful).
And then there's the fact that, empirically, there's no sizeable effect on program reliability thanks to static typing over dynamic typing, at least as far as studies have been able to show, as seen in the other links on this page.
2.87. Summary of 'A Philosophy of Software Design' programming philosophy
I found this to be the best summary I've seen yet of actually practical, well conceived, software construction methodology. A good way to form taste.
I really like the idea of deep modules – ones that present a simple yet powerful interface that hides a ton of complex logic and functionality. I think this should be applied even on the function level – large functions are not a bad thing, they don't really threaten comprehensibility in my opinion as long as the whole function is on the same level of abstraction; they only threaten reusability, but to that I say: semantic compression, my friend.
Another really powerful idea is that of worrying about cognitive complexity. I think this is deeply important in this industry where we deal with a lot of essential complexity and complexity when unchecked can grow infinitely. I think it's important to remember that abstraction itself is a form of complexity – not just because it's leaky, but because if you abstract beyond concrete referants, reasoning becomes more difficult.
2.88. Effective Programs programming philosophy
I'm waring of Rich Hickey, since he really does seem to have built a cult of personality around him in the Clojure community, but he is extremely smart, incredibly articulate, and very pragmatic and wise, and this is one of my favorite talks by him. I love his combination of being intelligent and careful and a Right Thing thinker, but also deeply pragmatic – aware of the need of programs to change over time, to be embedded into, and composed out of, heterogenous and ever-changing systems, to be dynamic, and how programming ideas effect those things.
2.89. A Case for Feminism in Programming Language Design programming philosophy
I had to painstakingly convert this from a two-column PDF so that I can more easily read it in more places, instead of just on my ereader or at my desk. I hope anyone who finds this appreciates the effort, it took fucking forever.
In any case, despite what might for some be an inflammatory title – even as a leftist and a woman I recoiled a bit, wondering how feminism could possibly be applied to programming language design – this is a really excellent paper. It goes into detail about all the shortcomings of the PLT community with respect to studying the practical and human aspects of programming language design, and the cultural factors that exclude those who want to do it, as well as just exclude people in general. Well worth a read.
2.90. How To Become A Hacker programming hacker_culture
This guide is pretty much as true today as it was when it was written (probably because it has been updated over time), both in its technical guidance and its explication of the hacker ethos as it applies to programming. Since I'm a hacker, and I think welcoming more people into the fold, it's well worth putting here.
2.91. Stop Writing Dead Programs programming software
An extremely funny, entertaining, well-argued, and interesting talk with a ton of historical and contemporary references that are really worth exploring – you could spend days just investigating all the links it makes – that talks about just how limited, clunky, out-dated, and counterproductive the way we program is, how we've somehow discarded all the amazing ideas and advancements that were made historically away from the batch-processed model of computing and just kept going with it, long past its sell-by date. But it doesn't just complain about our path-dependency: it gives rich historical and modern examples of alternative ways of doing programming. This is extremely influential on my notions of how programming should be done ideally, next to Inventing on Principle.
2.92. The Unix-Haters Handbook programming software
A hilariously funny book with many accurate and trenchant criticisms of UNIX that still hold true today, and many silly, off the mark, or outdated ones, all presented in a hypertext form that's so strange it reaches performance art.
2.93. The problematic culture of “Worse is Better” programming philosophy software
Richard P. Gabrial's essay gave a name to the idea of "worse is better" and thus unleashed a monster that has now become a dogma. While there is a kernel of truth to the idea that worse is better – namely, leaving space for things to evolve, be flexible, and be adapted; remembering to stay pragmatic instead of getting lost in abstract planning or beauty; and trying to iterate and get early versions of an idea out quickly so they can interface with the world and catch on – used as a dogma it is ultimately harmful. This essay describes how that happens: how, as a slogan, it has become a thought-terminating cliche used to justify doing whatever is easiest in all situations, without having to actually step back and think about good design, and how those bad historical bedrock abstractions have lead inexporably to more and more bloat and complexity piled on top to get away from those bad abstractions.
Basically, no one seems to grasp that when stuff that’s fundamental is broken, what you get is a combinatorial explosion of bullshit.
I plan to write an essay on what aspects of worse is better are worth keeping, good correctives toward the tendency of the Right Thing toward software planning and modernism, but this is a good critique of the idea that blindly following worse is better is itself better. A good corrective to some of the ideas of Notes on Postmodern Programming.
2.94. On Ada’s Dependent Types, and its Types as a Whole programming
Another article on the idea of a dependent type system that gets there by being pragmatic, down-to-earth, and easy to understand, instead of through category theory abstractions and type system complexity, by giving you a pretty expressive static type system and then verifying whatever that can't get at at runtime, as well as letting you create and manipulate new types at runtime.
2.95. Typed Lisp, A Primer programming
As someone who prefers expressive type systems with things like sum and product types and refinement types and parametric polymorphism and exhaustiveness checking, all of which can help me keep track of states and constraints, but has always wanted to use Lisp despite thinking it didn't have an expressive-enough type system (and thus dreading dealing with "undefined is not a function" style errors and trying to figure out what data library functions expect and return) this article was deeply enlightening. Finding out that Lisp has such an expressive type system, and seeing it expressed in terms that are familiar to me from ML languages, was really cool. Yes, it's runtime, but SBCL can check most things statically while leaving the advanced stuff (satisfies
) to runtime.
It was extremely enlightening to find out that Common Lisp is almost dependently typed: you can create and manipulate types with the language itself, since they're just regular symbols and lists, and also express constraints using the language itself, and express types and constraints using term-level values and not just types. It's just that some of it is dynamically verified instead of statically.
2.96. The Safyness of Static Typing programming
An author who (like me) likes static manifest types introspects and analyses the psychological factors that might lead to people assuming static types must automatically be more safe, even though empirical studies generally fail to bear that out in a meaningful way. It's important to consider such psychological factors, even if (as I think they do) good static type systems probably confer some benefits.
2.97. The Property-Based Testing F# Series, Parts 1-3 programming
2.97.1. The Enterprise Developer From Hell
Does an incredible job motivating randomized property-based testing and demonstrating how it's different (and better) than regular unit testing (or non-dependent static type systems). This is probably the single best place to start for those interested in PBT.
2.97.2. Understanding FsCheck
Introduces a PBT library for F#, but doubles well as an introduction to the whole field of libraries, since they all operate similarly. Gives you a really good starting understanding of how they work and how to use them.
2.97.3. Choosing properties for property-based testing
This one is the real meat, the real magic. This piece is full of such totally concentrated useful wisdom, just an incredibly useful, actionable, and meaty conceptual framework. Extremely highly recommended.
2.98. Semantic Compression, Complexity, and Granularity programming
These two essays (joined into one here) have had perhaps the single greatest impact of literally anything on how I program and think about programming and good programming abstractions. The idea that we should wait to abstract things until we actually know how they will be used and instantiated in practice, instead of trying to predict what we'll need. The idea of iteratively abstracting and refining interfaces. The idea to focus on the end result the goals and what you want out of them, instead of the methodology or succinctness, to avoid complexity or confusion. The need to maintain continuous granularity in APIs, so there aren't holes. Well worth a read.
2.99. Literature review on static vs dynamic typing programming
This is a really excellent – thorough, cogent, even-handed – analysis of the state of the scientific research on the benefits and drawbacks of static vesus dynamic type systems. It really puts to rest the notion that we have any strong reason to condemn or insult those who prefer one or the other, at least for now. Perhaps in the future, with better studies, the benefits of one or the other may be concretely established, but for now it seems more like personal preference than anything. Personally, I fall on the side of static typing, as it's just really helpful to prevent me up front from making annoying mistakes or forgetting things, but from my experience it really is just that, a nice helper that can make things a bit easier, but nothing game-changing in terms of program correctness. This literature review seems, if anything, based on the effect sizes, to support that notion, and maybe should incline us to look more kindly on things like gradual typing that can allow us to have the best of both worlds.
2.100. Execution in the Kingdom of Nouns programming
This is an incredible, classic essay from the most famous ranter of programming rants ever to put finger to key. It is an incredible takedown of Java-style OOP that is both witty and also intellectually sound. And as a corollary I think it functions well as a takedown of any bondage and discipline language.
2.101. TODO Design By Contract: A Missing Link In The Quest For Quality Software programming
Design by Contract seems like the perfect balance between high assurance/formal methods and comprehensibilty, expressiveness-to-complexity ratio, and practicality, for reason's I've discussed elsewhere. I haven't read this paper yet but I'm very interested in doing so.
2.102. Complexity Has to Live Somewhere programming
A more thorough elucidation of something I've said a lot before about how the mindless dogmatic pursuit of simplicity in the places most visible to programmers just pushes the necessary complexity needed to actually map to the world or requirements somewhere else, usually into less visible places like people's heads or glue scripts. This is very important to understand: trying to artificially "cut the gordian knot" of complexity is a bad move, it's just putting the burden somewhere else, possibly somewhere worse. Correctness is actually more important than simplicity. A good comeback to the "worse is better" and "unix philosophy" mindsets.
2.103. TODO Common Lisp: the Language, 2nd Edition (plus a guide on how to modify it to be up to date with ANSI) programming
Despite not quite being accurate to ANSI Common Lisp, I still find CLTL2 an invaliable reference for Common Lisp. It's much more comprehensible than the HyperSpec, while still being much more complete than any other book thanks to its position as an interim spec of sorts. Maybe someday I'll get around to editing my mirror to be up to date for ANSI.
2.104. A Road to Common Lisp programming philosophy
This is not just an incredibly complete and excellent set of resources to get started with Common Lisp, literally enough to get anyone completely off the ground, but it's also a really good articulation of some of the reasons that Common Lisp is attractive even today (although I have my own list).
2.105. The epistemology of software quality programming philosophy
"Studies show that human factors most influence the quality of our work. So why do we put so much stake in technical solutions?" I really agree with this one, as someone very interested in the human side of software. Very well worth talking about.
2.106. Maybe Not programming philosophy
This is another excellent talk by Rich, describing the shortcomings and misconceptions of traditional nominal type systems such as those found in Haskell. Haskell and similar but more advanced type systems (e.g. Idris) are often treated as the uncomplicated Right Thing, only needing to be more powerful or more consistent or more extreme, but while Hickey seems to be focused on a few specific flaws in such nominal type systems, I think those flaws show a glaring underlying philosophical issue with nominal type systems as a whole. I plan to write on why structural type systems are better eventually.
2.107. Hackers and Painters programming philosophy
This essay piggy-backs well on the back of Hackers the book, providing an in-depth explanation of the mindset a hacker takes toward their code – that it can be art in the same way painting can be, a thing of beauty and a means of self expression.
2.108. Technical Issues of Separation in Function Cells and Value Cells programming history
This paper is an extremely thorough and even-handed discussion of the benefits and drawbacks of Lisp-1s (like Scheme) versus Lisp-2s (like Common Lisp), and even articulates the point that ultimately they're both ~Lisp-5s by default due to macros, packages, etc, and Lisp-ns if you use macros and hash tables to assign arbitrary meaning to symbols, so they're not that different in the end. Ultimately whichever side you fall on, this is a useful reference to have handy, and of historical value as well.
2.109. EQUAL programming history
This essay by Kent Pitman defending design choices in ANSI Common Lisp with respect to equality operators and copying functions might seem of only historical interest – and it certainly is that, too – but it actually puts up a pretty good defense, in my opinion, of why those design choices were The Right Thing and even maybe hints that other languages should do something similar. It also gets at a very important point: that types are not actually very indicative of intent, just some sort of general operational compatibilty, without the introduction of copious newtypes at least, which has its own costs.
2.110. Ethics for Programmers: Primum non Nocere programming software philosophy anarchism
This essay proposes one core principle that could provide a solid foundation for a code of programmer ethics to grow around:
Programs must do always, and only, what the user asks them to do. Even if the programmers who made it consider that request to be unethical.
To justify the first clause, it outlines all the deep ways that people in the modern day trust and depend on our computers:
- We are dependent on them, because we need them to almost everything these days, including things that are required of us by law – which is why having a smartphone is borderline a human right.
- Even for things we don't need them to do, we trust them to act on our behalf, as user agents constantly, for things like communication, purchasing, remembering things for us, and more.
- Throughout all of that, we entrust them with vital, sensitive, personal information about us, our lives, and our loved ones.
This means that in a world – such as the one we have now – where software does not serve users, life with computers would be one of unending paranoid, suspicion, confusion, frustration, betrayal, theft, and extortion for users. A world we do not want.
To justify the second sentence, the essay shows how if software developers attempted to enforce their own ideas about morality on the users of their software, this would only break that trust, because then sometimes the software will betray them, or not do what they want, but what someone else, with a possibly different moral code, would want. He talks about other professions that have codes of conduct where they pledge to serve those who come to them for succor regardless of their personal feelings regarding morality, such as doctors, lawyers, and priests, and why those codes are important.
I'd like to add two more reasons – somewhat hinted at in the essay – that software developers should not attempt to pass judgement as part of their software (as opposed to in their capacity as people) on the ethics of what people do with their software:
- Surveillance: in order to know what your users are doing with your software in a way that's detailed and flexible enough to actually exclude unethical activities, you're probably going to need some kind of telemetry or at least storage of user activity. Moreover, many people believe their ethical obligations, when someone does something wrong, include publicly naming and shaming them, or reporting them to "the authorities," in which case actual surveillance is implied.
- Power: normalizing this idea that software developers should have power over what users can and cannot do with their software gives software developers direct and intimate power to morally police users. I don't believe in moral relativism – I think that individuals should be able to react to other people's perceived immoralities as they see fit – but I am an act consequentialist and this is a level of power that seems wrong to me – like installing surveillance devices and electric collars on anyone so we can watch them for wrongdoing – because it involves more power over someone else than power over your own reaction to someone else: it extends further into their live and is more invasive. It is also much more centralized than just "social consequences." And if we normalize such power, those with insane codes of ethics, as well as those with decent ones, will use it to enforce their wills.
This is why I'm always somewhat disturbed by "FOSS" licenses that violate freedom 0 of the four software freedoms. Yes, they're usually a certain type of queer leftist I generally agree with on what applications of software are bad, and which are good. But this is not a rule that leads to the greatest individual autonomy compatible with the equal autonomy of all in the long run. It's just posturing.
2.111. The Perils of Partially Powered Languages and Defense of Lisp macros: an automotive tragedy programming
Both of these blog posts (the second one in much greater detail) use real world, concrete industry examples to show that when the programming language used doesn't have enough power to express domain specific languages, data formats, and high level abstractions, within itself, and when its development tools don't allow live introspection and hot code reloading and rapid prototyping, those things don't just go away – developers don't actually "just stick to the basic language." Because that's deeply inefficient. Instead, they implement a plethora of domain specific languages and data formats separate from the main language, all incompatible and partially powered, which makes everyone's lives harder. Thus, in the end, the rejection of languages that are powerful at making DSLs like Lisp (or Haskell, in the case of the first article, but Lisp is far better at it than Haskell, and Haskell has other issues too) is not a practical decision made to ensure the software being built is comprehensible to as many people as possible and doesn't get lost under DSLs and complexity. It's a short-sighted, anti-intellectual exercise.
2.112. Functional Programming Doesn’t Work (and what to do about it) programming
I've actually compiled several blog posts on the same subject by James Hauge, including the titular one, into one larger narrative, because they're all closely related and significantly enhance the discussion in the others, and really work well as a combined narrative.
What I took away from this article is mostly that there are certain problem domains where pure functional programming actually introduces greater complexity, brittleness, and overhead which can outweigh the benefits in terms of explicitness and the more powerful architectures that rely on referential transparency that it can enable, even though pure functional programming is very beneficial in most cases. Therefore, we should carefully and stingily, but occasionally on a case-by-case basis, apply non-pure functional programming techniques to those problems where it's more helpful than harmful.
My experience in almost everything I've written though is that Trying to go for even a basic level of Purity would lead to an insane architecture. Take, for example, an Entity Component System:
If I want to have a system that gets all of the entities with a given set of components makes modifications to one of those components based on the information from the other components, I can either:
- Have a query function that goes through the entity system and returns tuples containing the applicable components for all of the entities that have the requested components, alongside the entity ID. This can be reused widely for other queries, and thus can be made very advanced, with negation, logical operators, backtracking, and so on. Then write a simple loop that goes through each of those and takes exclusive write access to the component it wants to modify and directly modifies it in place.
- Map over the list of tuples returned by the query function above, and producing a tuple of the entity ID and the modified component, which then has to go into a separate function that iterates over the entire list of entities again, in order to produce a new list of entities where the things indicated to be modified by the change list produced by the previous map are replaced.
- Iterate through the entire list of entities in the original map and produce the new list as you go, but then you can't reuse the entity selecting code, You have to do it all manually in the loop. So you end up duplicating code and it makes it difficult to have systems that operate on more interesting and complex selections that maybe do backtracking and such.
Even assuming a magical "sufficiently smart compiler" that can optimize away the copying implied by the latter two options, only the first option seems like a good option. The second introduces two separate loops to do the same thing, which both doubles how long it takes, and also just makes the code more complex and introduces more duplication. The third option is the worst of all, because while you get rid of the duplication of the loop, you can now no longer use the query system.
The other point I took from this article series is that there are certain types of violations of referential transparency that you can add that, although they may transitively infect a large portion of your code base, are small and simple enough that there isn't actually a significant cost to that. There is a difference between the net magnitude of the referential transparency violation's effects on your codebase, and just the scope of the things that are affected independent of how much they're really effected and how much it adds up. I think his example of a random number generator is a really good example of this. Literally almost every programming language except Haskell just allows you to directly get random numbers even if they are typically very purely functional (Erlang doesn't even let you modify things ever), and the reason for this is that if you use it in an inner place, yes it can sort of contaminate the rough, financial transparency of many other places in your code base and technically make their behavior non-deterministic as well. But since it's controlled by a seed and it's a very simple type of state in itself, that usually isn't actually a problem.
One thing that might help the predictability (for debugging) of functions that violate referential transparency by reading global state (so this only helps with one specific area, but yeah) may be the use of dynamic scope, so that you can treat global state as a variable you can pass in.
It could be argued that Haskell, too, has an escape hatch, with things like the State monad and IO monad, but there are two problems with this answer:
- This is pulling a kindgdom of nouns: you've artificially restricted the set of things your programming language can do directly, so you're using the abstractions it can access to claw those things back. They might be more "first class" in the sense that, since these capabilities are now expressed in terms of other parts of the language, you can now talk about them as values in the language – and that's pretty cool! – but they're second-class in reality, because you've got to sit on top of a tower of type abstractions and syntactic sugar to use them, and those abstractions are leaky: if you mess them up, the program will fall apart into very different bedrock abstractions that are more difficult to reason about. Yeah yeah, monads aren't that hard once you grok them, "I don't truly understand pure functional programming," whatever – but an imperative program breaking down into a page of type theoretic abstractions because that's its bedrock abstraction is still a qualitatively different (and worse) experience than a simple error from a language that actually knows about imperative code.
- These abstractions don't compose. There's no well-defined, consistent way to compose different monads, which means that it's very difficult to actually use them in more complicated situations where you may want more than one type of effect.
- Worse, because there's no implementation aspect to a lot of basic monads, they're just empty type tags with certain actions written for them, the operations one might want to do are scattered between a lot of different monads, and also occasionally confusingly duplicated between them, because there's nothing to keep them consistent.
- There's also a function-coloring effect to monads.
- When you're operating within the do-notation of a monad, you basically are just using an imperative language, but a particularly awkward, anemic one – because most of Haskell language and library design doesn't go into making the imperative side of it actually good to use – leading to people reinventing C in
do
.
2.113. What We've Built Is a Computational Language (and That's Very Important!) programming software philosophy
Reading this was honestly completely eye-opening. I'd already though that programming languages could maybe be tools for thought, but seeing what Wolfram Language could do solidifed it for me. Wolfram Language is the ultimate confirmation of the idea that a computational expression of actual ideas is not only possible if you have the right lannguage that was high level enough to allow you to express things on their own terms, yet didn't force you to get tangled up in abstractions, but could be profitable – could be a whole new way of expressing and clarifying ideas.
2.114. Proofs and Programs and Rhetoric programming philosophy
Sometimes, when I tell a new person that I absolutely love programming but hate math, they'll express surprise as to why. If they're a computer scientist, they'll quote Curry-Howard at me and tell me that "programming is math." This infuriates me. Here is an absolutely excellent article from a mathematician and computer scientist who likes math, and wants the two disciplines to be more similar (if that ever happens, I'm quitting) that explains why exactly this comparison, and the cliched phrases from CS and math people that accompany it, are not only wrong, but condescending and frustrating to people. If I had written the same thing out myself, it probably would've ended up saying the exact same things, so this is one of those cases where it's more efficient to just point to an existing article that says what I mean, rather than writing it myself.
2.115. Why Skin-Deep Correctness – Isn't, and Foundations Matter. programming software philosophy
A very good explanation of why we can't just layer shoddy half-implementations of better things on top of old bullshit and expect to eventually reach what we could have reached had we started with better foundations. A direct response to 'Worse is Better' and the idea that "the good news is that in 1995 we will have a good operating system and programming language; the bad news is that they will be Unix and C++."
2.116. Intro, Part II. programming software philosophy intelligence_augmentation
Despite being a relatively innocuous personal account, I find myself thinking about this often. The idea that computers should be bicycles for the mind, taken seriously instead of just as a marketing slogan.
2.117. Of Lisp Macros and Washing Machines programming software philosophy
Forget all the tedious arguments about whether Lisp macros are maintainable compared to languages that are more limited in their ability to program themselves. The entire point of computers is to automate the manipulation of information. If we're not using computers to do that as much and as efficiently as possible, so that our minds are free to do the most interesting parts of that, we're simply using computers wrong.
2.118. The Horrors of Static Typing programming
In this video, a type theorist who works on the type systems of compilers for statically typed languages walks through some of the incredible complexity that static typing can bring when attempting to type even basic things like numbers and collections with subtyping and implementation inheritance (phrased as object-oriented, but many non-OOP languages have those features, because they're so incredibly useful), as a corrective to the idea that static typing is "always good" and using dynamic typing is always bad and illogical. Instead, he pushes for a more cautious, thoughtful approach to understanding the tradeoffs on a case by case basis, and reverse-gradually-typed languages that let us make that choice, while staying statically typed by default.
2.119. Leaving Haskell behind? programming
This article, from the perspective of someone that used Haskell for a decade, even in the industry, and loves it still even as they choose to set it aside, echos a lot of my thoughts and feelings toward Haskell as someone who learned it but quickly drifted away because of the problems I saw with it. There's a lot to like about Haskell, a lot about it that is beautiful and powerful, but also severe and endemic problems with the culture surrounding it (namely, their obsession with type theoretic explorations, which is often found to be impractical in larger scale projects in the long run, as the article points out) and with its ecosystem.
2.120. The Art of Lisp & Writing programming literature philosophy
In this essay RPG compares the act of writing to the act of programming – how both are a dual process of discovery and refinement, deeply intertwined, as discovery must be refined, but the refinement of what has been discovered prompts new discoveries and insights that start the whole process over again. How systems are shaped not just by up front design and requirements (external) but also by internal forces, tensions, "triggers" of new ideas, possibilities, or problems. He makes the argument that programming languages, which are oriented around static thinking enforcing up-front specification of everything, rigid consistency requirements, and making code difficult to change dynamically, aren't suited to such an intertwined task of iterative discovery and refinement. At best, they're suited to a final version of a program, not a first version. See also, my arguments against formal methods and overly strong static type systems, Notes on Postmodern Programming, Hackers and Painters, and some other things I'm probably forgetting.
2.121. Engelbart's Violin software programming
This essay is an impassioned, and historically-informed, plea for the return of computer software and hardware that is designed for professionals, or at least people willing to spend the time to learn it – things that are willing to sacrifice some short-term ease of use in favor of efficiency, power, and elegance. For those who are willing to delay gratification and invest the time to learn such tools, the payoff is immense – are skilled people willing to learn and co-evolve with their tools not also worth thinking about, just as much as the average unskilled person? And yet the software industry of today seems to only care about the latter, not the former – and not as a matter of profitability, either – proper professional markets are whales that can be deeply lucrative. There seems to be a moral objection to software tools that are designed squarely targeted at skilled people willing to invest time in them, and that's terribly sad.
2.122. You have made your bedrock, now lie in it. software
A bedrock abstraction is an abstraction past which no recoverable error can happen – when a system breaks, it will always break down into whatever component parts are its bedrock abstraction, so they can be reassembled, and if it breaks past that, it just needs to be replaced wholesale.
The key idea of this blog post is that the bedrock abstractions we've chosen for modern-day computers, thanks to what's convenient to design and manufacture, and the fact that they're descendant from the systemically underpowered and designed-to-be-cheap original microcomputers, is insufficiently powerful, because it means that when software systems break or need to be modified, you're often dumped down to a level that's just too low to be useful to a human being – we need to raise the level of our bedrock abstractions to a point where we don't need to be afraid of them anymore.
2.123. Where the Unix philosophy breaks down software
The UNIX philosophy has reached the level of a religion in open source circles, so that when violations of it occur, they are viewed as sins to be eradicated, not as having real technical reasons. This article outlines one of those solid technical reasons.
2.124. The Nature of the Unix Philosophy software
A short, punchy, and funny, but nevertheless somewhat insightful takedown of the UNIX Philosophy. Again, from Xah Lee, so take witha massive grain of salt.
2.125. Lisp Operating System software
This is perhaps the most thorough outline in a single place of how modern operating system design, even at the level of things we consider foundational, such as processes, hierarchical filesystems, kernels, monolithic applications, and the distinction between memory and storage, are all arbitrary and suboptimal accidents of history that can be replaced with superior – more flexible, more powerful, and even more secure, through the use of operating system level object capability based security. It then describes the properties that a Lisp OS should have. Useful to read in conjunction with UNIX, Lisp Machines, Emacs, and the Four User Freedoms and my descriptions (one, two) of an ideal operating system, and things like Genera Concepts and Symbolics Technical Summary.
2.126. Evolutional Steps of Computer Systems software
This essay introduces an exceedingly useful framework through which to view computing environments that, ever since I've read it, I've used to think about the topic. The basic framework is that there are four different types of computing environment, each at a different level of abstraction and power for using, synthesizing, managing, and processing information, and generally we want to be climbing up the hierarchy. The hierarchy is:
- Numeric Systems
- systems designed entirely around numerical calculations, in a batch processed mode. Closest to what computing hardware actually does, and the earliest form of computing environment.
- Application-Specific Systems
- a computing environment that may do other things than numerical calculations, and may be slightly more interactive as well, but is still designed to do one specific task and nothing else.
- Application-Centric Systems
- computing environments that essentially operate as a framing device for multiple application-specific systems, one at a time or next to each other, but with little fluidity or even direct communication between them. This is the modern desktop operating system paradigm.
- Information-Centric Systems
- all of the information or content relevent to a task is in one place, displayed at once, with the tools needed to display or manipulate the varying kinds of information embedded into that common interface. Think Emacs, Acme, or Jupyter Notebooks. But the information centric computing environment is usually still relatively task-specific, even if it's a broad notion of task, and sits on top of something else.
- Application-Less Systems
- a version of an information-centric system where the information for all possible tasks, including operating system manipulation, is in one unified interface, fluidly communicating and combined.
2.127. Seven Laws of Sane Personal Computing software philosophy hacker_culture
A concise, cogent list of the principles that any personal computing environment should obey. I deeply agree with these principles, but perhaps they should be viewed as ideals to strive for, not as total prerequisites, for acheivability reasons.
Laws:
- Obeys the operator
- Forgives mistakes
- Retains knowledge
- Preserves meaning
- Survives disruption
- Reveals purpose
- Serves loyally
2.128. TWISTY LITTLE PASSAGES: An Approach to Interactive Fiction software fiction literature hypermedia
This book sparked my lifelong love of Infocom, parser interactive fiction, and my off and on obsession with someday writing a piece of interactive fiction of my own. It's an incredibly interesting book about an incredibly interesting medium (not just parser, but for me, mostly parser IF, because that's what spoke to me) that I wish more people knew about. I've also been thinking about writing future stories as hypertext, if I can figure out how to do that right.
2.129. Terminal boredom, or how to go on with life when less is indeed less software philosophy
- Self-consciously rigid, minimalist software and software protocols tend to force more complexity into things around them – for instance, more complexity is needed to implement them to get around their limitations.
- Such software is often not responseive to human needs such as:
- self-expression
- accessibility
- As a result, what we need is minimal but extremely flexible software that can be built into something non-minimal. Like Smalltalk systems.
2.130. "Ethical software" is (currently) a sad joke software philosophy anarchism
There seems to be this reactionary rejection of free software itself on the software-aware left because many of its proponents have historically been bigoted pigs and shortsighted people of privilege (if very smart and ethical in one very small area). This is very stupid:
- The examples they provide of why free software "looks like shit and runs like ass" to end-users are cherrypicked and meaningless.
- The alternatives they propose (usually piracy) cannot actually produce anything, and thus are not an actually-workable ideology unto themselves.
- They keep saying that most free software isn't useful to end users, only to "nerds," but making those nerds' lives easier makes the production of ethical software for you easier.
- It is impossible for ethical software to be anything other than free software, because otherwise there is no accountability and no free association.
2.131. Maximalist Computing software philosophy anarchism
Maximalist computing is designing protocols and platforms which support doing "everything", and in a pleasant manner. It is, in one way, an extension of the idea of computing, which is to simulate anything; there are many situations in which universal simulation can enhance a platform.
It is not necessarily opposed to minimalism, but it is certainly at odds with kinds of reductive minimalism; that which simplifies protocols by forcing the simplification of use-cases.
2.132. Civilisation, Primitivism and Anarchism anarchism
Soundly and neatly deals with primitivism as an ideology:
- It's rejection of the fundamental anarchist project – showing how we can have civilization, ecological sustainability, and liberty at the same time – for the premise of liberals – that these things are incompatible – just a slightly different conclusion.
- The 'population question', which renders primitivism a totally incoherent and unworkable ideology with nothing to offer outside a facile intellectual mind game of critique.
- The violent, coercive, and borderline fascist implications of any attempt to reduce the human population at a large scale.
- Responses to some responses to these points.
2.133. Nice Shit for Everybody anarchism philosophy
So many anarchists seem to want an end-state world much like Anarres from The Dispossessed – living gray, ascetic lives with the bare minimum of necessities meted out to us by centrally planned and centrally controlled storehouses. They seem to want to reach equality by making nearly everyone worse off, instead of trying to lift everyone up as high as possible – and yes, that will probably require the relinquishing of many luxuries on the part of first world inhabitants, especially middle class suburbanites and above, but the goal isn't that relinquishment, the goal is the enrichment of as many as possible as much as possible. This very short essay is a statement of rejection of that ideology.
2.134. Existentialism is a Humanism philosophy
This is a really excellent lecture by Sartre, giving a basic account of what existentialism is. Although I'm an amoralist, and as such don't agree with everything it says, it is an eloquent expression of many ideas also to be found in the likes of Stirner, except stated in a more comprehensible (to most people) way. I'm even sympathetic to what he has to say about morality – it's worth thinking about, and may inform your own nihilist ethics.
2.135. What’s wrong with CS research programming philosophy
I hate Yarvin and everything he stands for. However, I agree with the thesis of this essay, and think this is probably one of the best statements of that thesis I've seen. Plus it's well-written and funny as hell.
His thesis is essentially that CS research spends all its time on naval gazing about type systems, mathematical formalisms, abstract algorithms, and non-interactive batch programs like compilers, as opposed to interesting and creative programming, analyzing things like programming languages as complete systems including what they're like to use, doing empirical work with programmers, etc, because mathematical formalism is an easy way to generate infinite work that looks "hard" in a way interesting creative programming doesn't. Essentially, similar critiques to Richard P. Gabriel's paper and part of the feminism in PLT paper.
It does, however, have very serious problems as an argument for the thesis, which are indicitive I believe of the wider problems with Yarvin's reasoning in his other work. In this sense, the primary interest of this article was that it was a very interesting test-case for understanding this "philosopher" who is now the power behind the throne, in some ways, in the US: the article is about a field I know some amount about, so I wasn't likely to suffer from Gell-Mann amnesia and just believe him, but on the other hand, he's arguing for a thesis I actually agree with, so I'm not likely to apply overmuch scrutiny or dismiss what he's saying out of hand, as I might be accused of doing for his more outright evil theses.
What I learned is that, tldr, he's a very good writer, and very good at researching and marshalling many erudite minutiae to his aims, but that does not a good argument make – it just makes him seem very smart.
The general problems I saw with this essay qua argument were:
- Circular reasoning to ensure there is no nuance in his analysis (the Guy Steele thing).
- Totally unevidenced and kind of weird typologies used to structure his whole point.
- A ton of very erudite and detailed and obscure examples but not high level data to draw general conclusions with.
- Very strained shift to a foregone conclusion (acadamia bad) that isn't justified by his criticisms (all organizations could fall into these problems, not just public ones, and many of the best think tanks doing amazing creative programming were in acadamia, such as the MIT AI Lab).
- Very funny, very well-written, very well-spoken, but as shown by the previous points, not really with that much underneath.
2.136. Required reading for transfeminine people entering queer feminist spaces
2.136.1. Transmisogyny transmisogyny
Another horrifically poignant and accurate personal account, from a trans woman on Tumblr, of what it is like to exist in "queer feminist" spaces as someone who's femininity – and thus right to belong, and moral goodness – is constantly fragile and in question.
2.136.2. I Am A Transwoman. I Am In The Closet. I Am Not Coming Out. transmisogyny
A painfully personal exposition of a life of gender dysphoria as a closeted trans woman, and using that position as a window into how truly, horribly and damaging the misandry of cis (and some transfem) feminists is. Not just to trans women, but also to cis men, too, but how it also forms a convenient echo chamber through thought-terminating cliches and dismissing messages based on who says them, to insulate feminists from possible criticism and the impacts of their words.
2.136.3. Hot Allostatic Load transmisogyny
A trans women's experiences being abused at the hands of queer feminist spaces – transmisogyny, the inherent evil of callout culture and whisper networks, and so on. Just go fucking read it, it's an incredibly powerfully and poignantly written essay that, if you're on the left in the US, will probably deeply challenge your views.
2.136.4. How Twitter can ruin a life: Isabel Fall’s complicated story
The story of how Twitter cancel culture essentially killed a trans woman, convincing her that she couldn't truly be a woman, that the newfound identity she'd just been stepping into was invalid and needed to die, and that she should detransition, all because they couldn't handle a provocative title, and didn't read further than that title before banding up into a mob to punish her.
The story repeatedly goes to great lengths to try to say that it somehow wasn't cancel culture, but that's purely an exercise in doublethink. It absolutely is, it bears all the hallmarks of it:
- A preference for paranoid over reparative readings – looking for what's wrong with a work and trying to be angry at that, instead of looking at what's good about a work, possibly even what's good about it that others might appreciate even if you don't.
- Non-marginalized people trying to be social justice warriors on marginalized people's behalf without asking them, for virtue points.
- Thw dynamics of a mob, where nuance is erased and stopping the momentum is impossible.
- Paranoid assumptions about intention.
- The idea that only marginalized people can possibly write about marginalized experiences
- The idea that if someone writes about a marginalized experience differently than you would have, that means they "aren't really X."
- etc.
Some particularly egregious quotes are:
“There were several reporters that reached out to me right after the story came down. I remember having a conversation with one of them and saying, ‘Is [writing about] this really what you want to do? I’m not going to participate. I think that this is just going to make it worse,’” Clarke says. “And they ran with it. It brought in the whole cancel culture thing. Isabel needed that story down for her, not for them, and not for anybody else. But for her. And that’s why it came down. I tried to make that clear [in the editor’s note on the story’s removal]. But people still wanted that cancel narrative.”
Why did Isabel Fall need the story taken down for her own sake, hmm?
And:
"If anybody canceled Isabel Fall, it was Isabel Fall. She remains the subject of her own sentences."
Who made her "cancel herself" – check into the hospital and take down her story and ultimately kill the new version of herself she was stepping into? This is almost victim blaming to protect cancel culture.
2.137. Post-Left vs “Woke” Left anarchism post_left
The woke left fears the individualist/egoist post-left, because it offers something so much stonger, more vital, more free, than it ever could. This is a takedown of many of the ways in which it tries to smear egoists to protect its precious "correct" church of anarchism or leftism.
2.138. Post-Left Anarchy anarchism philosophy post_left
Leftism has a continual history of failure – failure to achieve anything, or failure to achieve anything good – and recuperation by capital. Anarchism must reject leftism, even though it was born alongside leftism and shares many of the same ends, and embrace a uniquely anarchist critique of everything leftism stands for: organization, ideology, and morality among them.
2.139. No Treason. No. VI. The Constitution of No Authority (1870) anarchism
A thorough – and humerous! – takedown of any possible authority one might consider the Constitution of the United States to have, assuming only that one believes that the majority does not have an automatic and inherent right to dominate the individual, and that one should only be bound by a contract one agrees to.
2.140. The Lisp "Curse" Redemption Arc, or How I Learned To Stop Worrying And Love The CONS programming hacker_culture anarchism
Another essay (by the same author as Terminal boredom, Ethical software is (currently) a sad joke, and Maximalist computing), this time attacking the so-called Lisp Curse from the angle of a radically decentralist, anti-organizationalist, egoist anarchist – namely, defending the idea that a community that can experiment widely with different language constructs, syntaxes, and so on in order to find the right one, while still remaining cross- and backwards- compatible, is actually very beneficial, as it allows the community to much more efficiently hone in on actually good solutions instead of having to stumble around blind before getting locked into path dependency and forcing a particular solution onto the entire community. Not only that, but such a community can still arrive at general standards by way of network effects, rendering moot most of the problem of the Lisp Curse.
See also: What is wrong with Lisp?
2.141. Why Market Exchange Doesn’t Have to Lead to Capitalism anarchism economics
This is a good brief, high level explanation by Kevin Carson as to why a freed market, absent the various monopolies that the state enforces on behalf of capitalists, would not necessarily result in the same distortions, inequalities, and exploitations we find under capitalism. To those, I'd add a few of my own:
- There is no such thing as a free market simpliciter; the nature of the market is always defined by particular property (and other) norms, and mutualist property norms of occupacy and use for personal possessions, and usufruct for things like land, substantially change the possibilities and incentives of a market. For instance:
- It would be impossible to have large economic organizations with direct control over or ownership of branches in different locations, because, if occupancy and use constitute ownership, the local people working at a branch would automatically be considered to be the ones that actually own any capital there, and since intellectual property can't be occupied, it couldn't be used to still keep such local branches in line. This means you wouldn't get big corporations (or even co-ops) steamrolling local businesses, because if they tried that, whatever local branch they created would be automatically converted into a local business! The only way to have large organizations like that with multiple locations would be to have fundamentally independent entities coordinate via federation.
- While global trade would still be possible (and necessary), it would be impossible for any kind of economic organization to fire all its local workers and ship all of its jobs overseas while keeping its management structure well paid and in tact, not only because there would be no third world to exploit, but also because the workers would be the management structure, and they would be unlikely to push for the obliteration of their own livelihoods.
- Extraction of natural resources bypassing local communities would be impossible.
- In a capitalist society, you can turn simply owning some piece of wealth into a way to generate more wealth for you without you having to do any more work through rent-seeking behavior like paying wage laborers to work it, renting it out, loaning it, etc. This means that all wealth that you own can generate more wealth for you at some conversion ratio, and then that wealth can generate more wealth, and so you can reach geometric wealth growth. Whereas, in a mutualist economy where you can only own what you personally occupy and use, then that strategy is not open to you. The only way that gaining more wealth can make more wealth for you is if it makes your, personal, labor-hours more productive – and there are significant diminishing returns there, as well as significant limits, since there are only so many things you can regularly use or occupy, and only so many hours a day you can work. Thus, what was once geometric is converted to logorithmic. There will be inequalities, yes, but since they won't come as a result of exploitation, there's no reason to worry about that, and they'll never be able to become so great as to threaten to create a significant power structure or centralization of wealth.
2.142. Corporations versus the Market; or, Whip Conflation Now anarchism economics
In this essay Roderick Long argues, successfully in my opinion, that corporate power is actually antithetical to an actually freed market, both because corporations naturally fear constant competition and shifting market demands, which will naturally break their power, and so will need to use state power to protect their position, and because corporate power is actually, historically, bought and protected (from competition, but also externalities, diseconomies of scale, etc) by means of substantial explicit, incidental, and implicit subsidies for big business on the part of the government. Thus, he argues, we should stop conflating advocacy for a free(d) market with advocacy for corporate capitalism.
2.143. The Network: A Parody of the Discourse anarchism economics parody
This is a short parody of anti-market anarchists which operates by replacing "market" (a network of trade) with just the abstract concept of networks of individual actors, to show how absurd their arguments truly are.
2.144. Harrison Bergeron fiction
You all know this one. I won't belittle you by explaining it.
2.145. Software and Anarchy anarchism programming software
A treatment of various issues in software design and production (including programming tools) from the perspective of an egoist anarchist influenced by Bookchins ideas around social ecology and liberatory technology. This is definitely an interesting piece, although there are specific things I disagree with, such as:
- That a static type system is inherently bad or limiting of the programmer. To make this critique, the authors seem to be conflating static type systems with static programming languages, but you could easily have a language as dynamic as Common Lisp or Smalltalk with a static type system (see Coalton), as well as pointing at the anti-human consequences of non-gradual type systems without realizing that gradual type systems are possible! If those two points are addressed, then, static type systems can be had without them being inherently anti-liberatory, and can provide benefits, by helping you remember and deal with details that'd otherwise be easy to forget or get wrong – an important thing for someone like me who has a memory-related disability!
- The idea that it's a good idea to use a license for your works that is copyleft but also explicitly denies commerical use to all except worker co-operatives, or in peer-production where trade is direct sharing instead of monetary compensation. While at first I found this idea intriguing, because I see licenses not as things that we need to worry about the enforcability of, since the copyright system ultimately always serves corporate interests, and therefore it doesn't matter whether they could theoretically be enforced or not, but instead as statements of intentions and preferences with respect to how your contributions to the Commons should be understood and treated by others, and this seemed like a clear statement of values in support of things I like (peer production and worker ownership), I quickly grew uncomfortable with it upon further thought. Namely because:
- While licenses are in my opinon mostly to be viewed as statements of values and preferences, they also do inherently involve the, at least rhetorical, invocation of state violence. Using the state's legal system to undo copyright itself, to return things to the commons where they should be, if they benefitted in any way from the commons, as copyleft does, doesn't seem like a problem to me, because it's less a positive application of state violence (rhetorically) then a nullification of it. However, this license seems to want to use state violence to militate against certain forms of organization.
- This is especially bad, in my opinion, because I don't think peer production is inherently better than trade for forms of monetary compensation, and I don't think all worker cooperatives are good, or all forms of corporations or wage labor are bad. Especially in the second case, the former is more likely to be less exploitative than the latter, but not necessarily. There are situations in which I can imagine wage labor is just fine, and a small business isn't exploitative, and situations I can imagine in which a worker cooperative is a cesspit of backstabbing, infighting, power politics, and exploitation of people with less voice in the process, and externalities on the community. So I don't see why I should make such an absolute statement.
However overall I agree with and am interested in the conclusions of this paper!
2.146. The Anti-Human Consequences of Static Typing programming
Non-gradual typing subjects the human programmer to the machine. This is a problem, because while the machine can check some limited set of properties about your program, it can't know what your actual, practical, local, nuanced goals are – including whether you even need perfect consistency on the things it can check or not – so you're subjugating human values to machine values! Essentially a moral argument against type systems, for what that's worth.
2.147. The Use of Knowledge in Society anarchism economics
Although Hayek's knowledge problem argument is often put to use by conservatives and libertarians, that doesn't mean it isn't correct – and in more consistent hands, it militates strongly against any form of hierarchy or centralization at all, not just the much-feared socialist bureaucracy.
2.148. THe Modern Business Corporation versus the Free Market? anachism economics
Although I'm not a fan of natural law arguments, this is an interesting article making the case that the corporate form is ultimately a child of the state, and I think the argument might possibly offer components that can be applied outside a natural law framework, by just thinking about how we might constitute economic and social norms that make the corporate form impossible in the ways he proposes natural laws do.
2.149. Fandom, purity culture, and the rise of the anti-fan
A story of how purity culture took over online spaces.
2.150. Revealed Preference: A Parable anarchism economics
An excellent and enlightening exposition of why markets and market pricing are extremely helpful in resolving resource allocation problems – even when you care about equity! – in comparison even to just face to face communication.
3. Other philosophy and technology books on my (long-term) reading list
- Studies in Mutualist Political Economy
- Exodus (by Kevin A. Carson)
- The Homebrew Industrial Revolution
- The Desktop Regulatory State
- A Thousand Plataeus
- Difference and Repetition
- Anti-Oedipus
- Anti-Christ
- Beyond Good and Evil
- Thus Spake Zarathustra
- The Geneology of Morals
- The Gay Science
- Discipline and Punish
- Madness and Civilization
- The Order of Things
- The Archaeology of Knowledge and The Discourse on Language
- Against Method
- Structure of Scientific Revolutions
- On the Varieties of Religious Experience
- God and the State
- Essays in Radical Empiricism