posts: 061, 062
authorLucian Mogosanu <lucian.mogosanu@gmail.com>
Sun, 23 Apr 2017 12:59:32 +0000 (15:59 +0300)
committerLucian Mogosanu <lucian.mogosanu@gmail.com>
Sun, 23 Apr 2017 12:59:32 +0000 (15:59 +0300)
posts/y03/061-development-log-ii.markdown [new file with mode: 0644]
posts/y03/062-greenspan-assault-on-integrity.markdown [new file with mode: 0644]

diff --git a/posts/y03/061-development-log-ii.markdown b/posts/y03/061-development-log-ii.markdown
new file mode 100644 (file)
index 0000000..1555d97
--- /dev/null
@@ -0,0 +1,248 @@
+---
+postid: 061
+title: The Tar Pit development log [ii]
+date: April 17, 2017
+author: Lucian Mogoșanu
+tags: tech
+---
+
+In our [previous log entry][development-log-i] we set the goal of
+hosting The Tar Pit on its own HTTP server, as opposed to a
+general-purpose setup, and then using it to serve dynamic content,
+e.g. comments. We skimmed through a few Common Lisp HTTP server
+implementations -- why reinvent the wheel when we can steal the
+blueprints? -- and found at least two such implementations that are
+minimal enough to be useful for us: Sven Van Caekenberghe's
+[s-http-server][s-http-server] and Tomo Matsumoto's
+[cl-http-server][cl-http-server]. To continue, we'll give a brief
+overview of one of the former and afterwards get a better look at the
+latter.
+
+Let's begin with s-http-server. Its interface is fairly simple to use,
+as stated in the README: creating, starting and stopping servers as well
+as setting handlers for given URIs are all a piece of cake,
+except... the whole thing doesn't really work. On a first glance, we
+notice that the `start-server` method calls
+`s-sysdeps:start-standard-server`, while `stop-server` calls
+`s-sysdeps:kill-process`, which denotes a confusion between the two
+abstractions[^1]. Then we notice s-sysdeps contains its own
+general-purpose `stop-server` routine, so we can make that public and
+then use it (instead of `kill-process`) to stop the HTTP server.
+
+All this turns our server into a working machine until trying to serve a
+static file, any file at all. Leaving aside the fact that for some
+reason SLIME doesn't integrate too well with SBCL's `add-fd-handler`
+(`sb-impl::serve-event` needs to be called manually to trigger the
+handling routine), the HTTP connection handler[^2] ends up trying to
+write a sequence of raw bytes to a stream that expects characters. I'm
+not willing to put up with that; what other bugs await in the rabbit
+hole of s-http-server? If you're interested, find out yourself and let
+us know.
+
+cl-http-server is very similar to s-http-server, only it's somewhat
+heavier on the dependency side: it depends among others on Bordeaux
+Threads, CL-FAD, flexi-streams and trivial-shell, which themselves have
+some dependencies, which make our in-depth exploration somewhat
+difficult. There's also no tutorial on the cl-http-server page, so we're
+going to go through the first steps ourselves. Let us proceed.
+
+Assuming that all the packages are in place and ASDF knows how to load
+them[^3], let's begin by importing the library:
+
+~~~~ {.commonlisp}
+CL-USER> (asdf:load-system :cl-http-server)
+...
+CL-USER> (in-package :cl-http-server) ; ... for convenience
+~~~~
+
+Now that we have `cl-http-server` loaded, how do we use it? The examples
+directory has a file called [test.lisp][cl-http-server-test] which gives
+us a basic idea. Also, looking at the definition of `start-server`
+(`server.lisp`), we see that the default value of the `server` argument
+is the result of a call to `make-server`, the constructor of
+`server`. Let's take a look at how a `server` object looks:
+
+~~~~ {.commonlisp}
+(defstruct server
+  (host                   "127.0.0.1"             :type string)
+  (port                   8080                    :type integer)
+  ...
+  (public-dir             "/tmp/cl-srv/public/"   :type string)
+  ...
+  (session-save-dir       "/tmp/cl-srv/session/"  :type string)
+  ...
+  (thread))
+~~~~
+
+There are quite a few fields whose meaning we don't understand exactly
+quite yet, but we notice there is a `public-dir` which can be used to
+serve static files[^4], some fields related to session management[^5]
+and finally some configuration related to logging, cookies and garbage
+collection. We don't care about most of them right now, but we'd like to
+be able to do the bare minimum of serving The Tar Pit in its current
+form, which means that we can set `public-dir` to wherever the site
+is. Let's give it a try:
+
+~~~~ {.commonlisp}
+CL-HTTP-SERVER> (defparameter *my-server*
+                  (start-server (make-server :public-dir *lbs-site*
+                                             :port 8000)))
+*MY-SERVER*
+CL-HTTP-SERVER> (describe *my-server*)
+#S(SERVER..
+  [structure-object]
+
+Slots with :INSTANCE allocation:
+...
+~~~~
+
+Where `*lbs-site*` is the path to The Tar Pit
+[Lisp Blog Scaffolding][i-wrote-a-blog] site defined in
+[config.lisp][config-lisp].
+
+Now, pointing the browser at `localhost:8000` displays us a "Default
+index page" message, which is actually the same page as that returned by
+the `index-page` function, which we notice is called from
+`default-page`. Either way, by trying out `localhost:8000/index.html` we
+actually get the index of our site. This is pretty incovenient, since
+we'd like `/` (the root) to point to this page. Before looking at how to
+do that, let's get an overview of a few of the abstractions that
+cl-http-server offers us:
+
+* `(get-page path)`: retrieves the page associated with `path`
+* `(set-page path fn)`: associates the page given by the handler `fn`
+  with `path`
+* `(page-lambda (args ..) body)`: macro that creates a handler to be
+  used in conjunction with `set-page`
+* `(defpage name (args ..) body)`: alias for `set-page` and
+  `page-lambda`; read the code
+* `(page path args)`: sort of an alias for `get-page`; read the code
+* `(serve-file path)`: pretty self-explanatory
+
+We notice that `default-page` tries to get the page named `default`
+(which, intuitively enough, maps to the URI `/default`). If it finds a
+definition for it, then it serves it; otherwise, it returns the "Default
+index page" message. So all we need to do is to define it using
+`defpage`:
+
+~~~~ {.commonlisp}
+CL-HTTP-SERVER> (defpage default ()
+                  (serve-file
+                   (merge-pathnames #p"index.html"
+                                    (namestring (public-dir)))))
+~~~~
+
+Pointing the browser to `/` or `/default` should throw up the index page
+now.
+
+Now we want to test dynamic stuff, so let's say that we wanted to create
+a dynamic page, `/my-page`, that increments a variable on each access
+and displays it. First, let's define the variable:
+
+~~~~ {.commonlisp}
+CL-HTTP-SERVER> (defparameter *my-lispy-var* 0)
+*MY-LISPY-VAR*
+~~~~
+
+Now let's define the page. For convenience, we'll use cl-http-server's
+`html` utility function that returns a very simple HTML page with a
+title and a body. We won't need this for the actual blog, since we
+already use CL-WHO for templating, but for this prototype it should
+suffice. We will wrap the page definition in a `progn` that does two
+things: it increments `*my-lispy-var*` and it calls a templated `html`
+which formats the value of `*my-lispy-var*` to a string:
+
+~~~~ {.commonlisp}
+CL-HTTP-SERVER> (defpage my-page ()
+                  (progn
+                    (incf *my-lispy-var*)
+                    (html :body
+                          (format nil "Lispy var: ~s"
+                                  *my-lispy-var*))))
+~~~~
+
+Now let's suppose we want to do more sophisticate things. Let's say that
+we want to do some processing of the URL of `/my-page`, e.g. if we want
+to search for a specific page when `/my-page/a` is entered[^6], etc. For
+this, cl-http-server provides us with the `uri-path` function, which
+tokenizes the URL by slashes and it allows us the access the nth token
+in the URL. Let's put this into an example:
+
+~~~~ {.commonlisp}
+CL-HTTP-SERVER> (defpage my-page ()
+                  (progn
+                    (incf *my-lispy-var*)
+                    (html :body
+                          (format nil
+                                  "URL suffix: ~s, lispy var: ~s"
+                                  (uri-path 2)
+                                  *my-lispy-var*))))
+~~~~
+
+Now pointing the browser to `/my-page` will display "URL suffix: NIL,
+lispy var: 7"; then if we point it to `/my-page/a`, it will display "URL
+suffix: "a", lispy var: 8" and so on.
+
+Now we can stop the server (not that we would ever need to):
+
+~~~~ {.commonlisp}
+CL-HTTP-SERVER> (stop-server *my-server*)
+T
+~~~~
+
+To sum things up, I am quite satisfied. At some point I will need to do
+some basic benchmarking and stress testing to make sure that the server
+performs well under basic workloads, but even as a test setup this is
+quite satisfactory. The achievement here is that we've managed to throw
+together a basic server that adheres to the fits-in-head principle,
+i.e. even if the length of this post is above the tarpitian average, it
+still fits within the bounds of decency.
+
+In the following instances of our series we will adapt The Tar Pit LBS
+to output posts and their metadata as S-expressions and we will
+integrate the HTTP server component to serve said S-expressions as web
+pages from what will be a database of blog items.
+
+[^1]: Servers are processes that listen, i.e. wait for incoming
+    connections on a given network address, e.g. an IP/port pair. That
+    said, looking at the server as an abstract data structure, as
+    defined for example by the `s-sysdeps` package, it contains other
+    items such as one or more sockets, a reference to the connection
+    handler routine and others. Thus servers and processes, as defined
+    in this framework of ours, lie at two distinct levels on the
+    abstraction ladder.
+
+[^2]: `handle-http-server-connection` calls
+    `handle-one-http-request-response` which does all the bookkeeping,
+    e.g. calls the particular resource handler for a given URL.
+
+    For static files, the resource handler points to
+    `host-static-resource`, wherein our pesky bug lies.
+
+[^3]: Many people use Quicklisp for this. If you've been reading The Tar
+    Pit, you know that I don't think much of the `apt-get` method when
+    it comes to software engineering. This is why The Tar Pit is a
+    monolithic beast, containing all the software needed to run it save
+    for SBCL.
+
+    Anyway, you can have a look at [blog.lisp][blog-lisp] to see how the
+    blog loads its dependencies at boot time. It's ugly, but what can I
+    say, it hasn't failed me so far.
+
+[^4]: Why not multiple public dirs? No idea. Depending on how things go,
+    I might have to hack this.
+
+[^5]: I am unsure of how useful this is, but... we'll see.
+
+[^6]: This is, of course, a potential security issue, but fortunately
+    cl-http-server already does some URL preprocessing on GET requests,
+    which at least gives us some level of guarantee that we're working
+    with a sane URL, e.g. an URL that doesn't contain double periods.
+
+[development-log-i]: /posts/y03/05c-development-log-i.html
+[s-http-server]: https://github.com/svenvc/s-http-server/
+[cl-http-server]: https://github.com/tomoyuki28jp/cl-http-server
+[blog-lisp]: https://github.com/spyked/thetarpit.org/blob/master/blog.lisp
+[cl-http-server-test]: https://github.com/tomoyuki28jp/cl-http-server/blob/master/examples/test.lisp
+[i-wrote-a-blog]: /posts/y03/053-i-wrote-a-blog.html
+[config-lisp]: https://github.com/spyked/thetarpit.org/blob/master/config.lisp.example
diff --git a/posts/y03/062-greenspan-assault-on-integrity.markdown b/posts/y03/062-greenspan-assault-on-integrity.markdown
new file mode 100644 (file)
index 0000000..814c7e2
--- /dev/null
@@ -0,0 +1,352 @@
+---
+postid: 062
+title: Greenspan's Assault on Integrity, annotated
+date: April 23, 2017
+author: Lucian Mogoșanu
+tags: cogitatio
+---
+
+Alan Greenspan is a well-known and supposedly knowledgeable economist
+from the United States; supposedly, not unquestionably, for two
+reasons. The first reason is that while I'm not an economist myself, I
+fancy myself a thinker -- and hopefully more than just fancy, but I'll
+leave this judgment to thinkers -- and as a supposed thinker, I am not
+convinced. The second reason is history itself, more precisely the
+unquestionable fact that under Greenspan's long-lived leadership of the
+Federal Reserve, the US suffered blow after blow economically, from the
+ongoing "tech bubble" started in the late 1990s to the recession of
+2008.
+
+But instead of trying to answer such nonsensical questions as "was
+Greenspan a good economist?", we will attempt a practical exercise in
+understanding the man, by commenting on a text he published more than
+twenty years before he started playing with federal money
+policies. Below you have a copy of The Assault on Integrity, published
+in August 1963 in The Objectivist Newsletter, later republished and
+edited by Ayn Rand, etc., and now annotated by yours truly.
+
+> Protection of the consumer against "dishonest and unscrupulous
+> business practices" has become a cardinal ingredient of welfare
+> statism. Left to their own devices, it is alleged, businessmen would
+> attempt to sell unsafe food and drugs, fraudulent securities, and
+> shoddy buildings. Thus, it is argued, the Pure Food and Drug
+> Administration, the Securities and Exchange Commission, and the
+> numerous building regulatory agencies are indispensable if the
+> consumer is to be protected from the "greed" of the businessman.
+>
+> But it is precisely the "greed" of the businessman or, more
+> appropriately, his profit-seeking, which is the unexcelled protector
+> of the consumer.
+
+But how is this so-called "greed" measured? For their pretended
+adherence to science, said regulatory agencies are markedly lacking in
+rigorousness with respect to their claims. How do we quantify greed? By
+measuring profits? But any rational (and thus self-interested) agent
+will try to make a profit. By measuring the amount of people with
+E. coli infections? But that could be explained in a million other ways
+(say, incompetence). Which drives us towards the point that intent does
+not matter one bit in the interaction between economic -- or political,
+for that matter -- actors[^1].
+
+> What collectivists refuse to recognize is that it is in the
+> self-interest of every businessman to have a reputation for honest
+> dealings and a quality product. Since the market value of a going
+> business is measured by its money-making potential, reputation or
+> "good will" is as much an asset as its physical plant and
+> equipment. For many a drug company, the value of its reputation, as
+> reflected in the salability of its brand name, is often its major
+> asset. The loss of reputation through the sale of a shoddy or
+> dangerous product would sharply reduce the market value of the drug
+> company, though its physical resources would remain intact. The market
+> value of a brokerage firm is even more closely tied to its good-will
+> assets. Securities worth hundreds of millions of dollars are traded
+> every day over the telephone. The slightest doubt as to the
+> trustworthiness of a broker's word or commitment would put him out of
+> business overnight.
+
+So, you see, it's not what you intend to do that matters, but what you
+have done so far to deserve sitting at the discussion table. It's
+basically just acting
+[from causes, not towards purposes][cauze-si-scopuri]. In other words,
+Greenspan proposes the Web of Trust as a form of organization.
+
+> Reputation, in an unregulated economy, is thus a major competitive
+> tool. Builders who have acquired a reputation for top quality
+> construction take the market away from their less scrupulous or less
+> conscientious competitors. The most reputable securities dealers get
+> the bulk of the commission business. Drug manufacturers and food
+> processors vie with one another to make their brand names synonymous
+> with fine quality.
+>
+> Physicians have to be just as scrupulous in judging the quality of the
+> drugs they prescribe. They, too, are in business and compete for
+> trustworthiness. Even the corner grocer is involved: he cannot afford to
+> sell unhealthy foods if he wants to make money. In fact, ill one way or
+> another, every producer and distributor of goods or services is caught
+> up in the competition for reputation.
+>
+> It requires years of consistently excellent performance. to acquire a
+> reputation and to establish it as a financial asset. Thereafter, a
+> still greater effort is required to maintain it: a company cannot
+> afford to risk its years of investment by letting down its standards
+> of quality for one moment for one inferior product; nor would it be
+> tempted by any potential "quick killing." Newcomers entering the field
+> cannot compete immediately with the established, reputable companies,
+> and have to spend years working on a more modest scale in order to
+> earn an equal reputation. Thus the incentive to scrupulous performance
+> operates on all levels of a given field of production. It is a
+> built-in safeguard of a free enterprise system and the only real
+> protection of consumers against business dishonesty.
+
+No argument here, at least that's how business works in the civilized
+world, as opposed to the troglodyte tribes of McDonaldia. Greenspan's
+explanation is plain, but this does not explain why socialists prefer
+regulation (that is, a boot stamping on a human face, forever, to quote
+Orwell) over reputation. Let's read on.
+
+> Government regulation is not an alternative means of protecting the
+> consumer. It does not build quality into goods, or accuracy into
+> information. Us[^2] sole "contribution" is to substitute force and
+> fear for incentive as the "protector" of the consumer. The euphemisms
+> of government press releases to the contrary notwithstanding, the
+> basis of regulation is armed force. At the bottom of the endless pile
+> of paper work which characterizes all regulation lies a gun. What are
+> the results?
+
+Greenspan identifies the three basic constituents of any and every
+totalitarian state: a bureaucracy to "make the policies"
+([freedom is slavery][freedom-is-slavery]), a circus to keep people
+distracted while gathering intelligentia in the field (ignorance is
+strength) and an armed force to dispose of inconvenient adversaries (war
+is peace).
+
+> To paraphrase Gresham's Law: bad "protection" drives out good. The
+> attempt to protect the consumer by force undercuts the protection he
+> gets from incentive. First, it undercuts the value of reputation by
+> placing the reputable company on the same basis as the unknown, the
+> newcomer, or the fly-by-nighter. It declares, in effect, that all are
+> equally suspect and that years of evidence to the contrary do not free
+> a man from that suspicion. Second, it grants an automatic (though, in
+> fact, unachievable) guarantee of safety to the products of any company
+> that complies with its arbitrarily set minimum standards. The value of
+> a reputation rested on the fact that it was necessary for the
+> consumers to exercise judgment in the choice of the goods and services
+> they purchased. The government's "guarantee" undermines this
+> necessity; it declares to the consumers, in effect, that no choice or
+> judgment is required-and that a company's record, its years of
+> achievement, is irrelevant.
+
+More precisely, socialists identify that
+[at the bottom of the food chain][slither] there squirms a category of
+people (most likely themselves) who are not equipped intellectually to
+make a choice. Given this, the former propose making a choice for the
+latter, but since this would be discriminatory and all, they in fact
+propose making a choice for everyone, including those who can and who
+would otherwise prefer making a choice for themselves. Nevermind that
+people are not "equal" by any standards except biological ones (and very
+often not even those), and nevermind that this doesn't work in practice
+-- this is *exactly* what the regulators in question will propose[^3].
+
+The results? People who are not equipped to choose will still be unable
+to choose, while those who at least have a potential in this sense will
+be disincentivised to learn how to make a choice. Meanwhile, people who
+can and want to make a choice other than the one officially approved by
+the committee of proper-choice-making will find it harder to do so than
+if there were no committee at all. You do the math on that.
+
+> The minimum standards, which are the basis of regulation, gradually
+> tend to become the maximums as well. If the building codes set minimum
+> standards of construction, a builder does not get very much
+> competitive advantage by exceeding those standards and, accordingly,
+> he tends to meet only the minimums. If minimum specifications are set
+> for vitamins, there is little profit in producing something of
+> above-average quality. Gradually, even the attempt to maintain minimum
+> standards becomes impossible, since the draining of incentives to
+> improve quality ultimately undermines even the minimums.
+
+That isn't to say that minimum standards aren't appropriate in high-risk
+contexts such as nuclear plants and buildings in areas with high seismic
+activity -- Taleb has the details on risk and fragility, refer to him
+for further details. However, this is orders of magnitude removed from
+what ecologists have done with light bulbs and the automotive market, to
+give only a couple of examples of an unsustainable planned economy
+model.
+
+Either way, minimum standards aren't established so much for statal
+entities to enforce as they are for interested parties to use for
+verification. Any standard is useless unless the one who pays can verify
+compliance.
+
+> The guiding purpose of the government regulator is to prevent rather
+> than to create something.
+
+That is precisely so. And sometimes prevention is necessary. But it's
+not necessary unless it's necessary, and please to not underplay the
+meaning of "necessary".
+
+> He gets no credit if a new miraculous drug is discovered by drug
+> company scientists; he does if he bans thalidomide. Such emphasis on
+> the negative sets the framework under which even the most
+> conscientious regulators must operate. The result is a growing body of
+> restrictive legislation on drug experimentation, testing, and
+> distribution. As in all research, it is impossible to add restrictions
+> to the development of new drugs without simultaneously cutting off the
+> secondary rewards of such research -- the improvement of existing
+> drugs. Quality improvement and innovation are inseparable.
+>
+> Building codes are supposed to protect the public. But by being forced
+> to adhere to standards of construction long after they have been
+> surpassed by new technological discoveries, builders divert their
+> efforts to maintaining the old rather than adopting new and safer
+> techniques of construction.
+
+Greenspan's rhetoric is subtly propagandistic here. The property of any
+of the items in discussion of being new, modern and whatnot is not
+relevant. Coincidentally, in the field he mentions (among others), it
+may take years to prove that a new technology is also safer, during
+which said technology will have stopped being new.
+
+It may be that he is referring to a particular policy related to
+construction. "Any material is permitted that withstands a force of x
+meganewtons per square meter and has the elasticity coefficient y, etc."
+is a decent policy; at the same time "any material is permitted that is
+one of alloys x, y and z" is a shitty policy, because construction
+materials may indeed change easily in time, while wind pressure, soil
+types, etc. are mostly invariant in a given place. Or if we're not able
+to comprehend the science behind buildings, we should rather leave that
+to those who do, shouldn't we?
+
+Moreover, even letting aside risk factors, a badly engineered building
+is easy to build and hard to demolish, and even if clients make the
+choice of putting the construction company out of business, the town
+will be left with an unused building that wastes real estate space,
+which is a pretty scarce resource. So it's not all that evil for the
+town to hamper trigger-happy constructors from trying to reach their
+(potentially overinflated) projections.
+
+> Regulation - which is based on force and fear - undermines the moral
+> base of business dealings. It becomes cheaper to bribe a building
+> inspector than to meet his standards of construction. A fly-by-night
+> securities operator can quickly meet all the S.E.C. requirements, gain
+> the inference of respectability, and proceed to fleece the public. In
+> an unregulated economy, the operator would have had to spend a number
+> of years in reputable dealings before he could earn a position of
+> trust sufficient to induce a number of investors to place funds with
+> him.
+
+That's a very good observation. Inasmuch as the town doesn't act
+unequivocally, trigger-happy constructors will have no problems buying
+the right people in the right places -- just in case you thought "lupta
+împotriva corupției"[^4] was anything but gargle.
+
+> Protection of the consumer by regulation is thus illusory.
+>
+> Rather than isolating the consumer from the dishonest businessman., it
+> is gradually destroying the only reliable protection the consumer has:
+> competition for reputation.
+>
+> While the consumer is thus endangered, the major victim of
+> "protective" regulation is the producer: the businessman. Regulation
+> which acts to destroy the competition of businessmen for reputation
+> undermines the market value of the good will which businessmen have
+> built up over the years. It is an act of expropriation of wealth
+> created by integrity. Since the value of a business -- its wealth --
+> rests on its ability to make money, the acts of a government seizing a
+> company's plant or devaluing its reputation are in the same category:
+> both are acts of expropriation.
+
+"Expropriation", that is, rape.
+
+> Moreover, "protective" legislation falls in the category of preventive
+> law. Businessmen are being subjected to governmental coercion prior to
+> the commission of any crime. In a free economy, the government may
+> step in only when a fraud has been perpetrated, or a demonstrable
+> damage has been done to a consumer; in such cases the only protection
+> required is that of criminal law.
+>
+> Government regulations do not eliminate potentially dishonest
+> individuals, but merely make their activities harder to detect or
+> easier to hush up. Furthermore, the possibility of individual
+> dishonesty applies to government employees fully as much as to any
+> other group of men. There is nothing to guarantee the superior
+> judgment, knowledge, and integrity of an inspector or a bureaucrat --
+> and the deadly consequences of entrusting him with arbitrary power are
+> obvious.
+
+The crux of this particular problem is that not only is economic agents'
+reputation devalued, but bureaucrats themselves are not subject to a
+judgment of their reputation. By Constitution, each n years a bunch of
+people are elected, which may or may not lead to some bureaucrat or
+another taking the office in another's stead[^5]. How does the reputable
+constructor know that the new bureaucrat isn't just there to get him?
+Or, as it happens in Romania's case, what do you do when you know that
+the newly-instated bureaucrats are there specifically to put down their
+adversaries and not for any sort of imagined public interest?
+
+> The hallmark of collectivists is their deep-rooted distrust of freedom
+> and of the free-market processes; but it is their advocacy of
+> so-called "consumer protection" that exposes the nature of their basic
+> premises with particular clarity. By preferring force and fear to
+> incentive and reward as a means of human motivation, they confess
+> their view of man as a mindless brute functioning on the range of the
+> moment, whose actual self-interest lies in "flying-by-night" and
+> making "quick kills." They confess their ignorance of the role of
+> intelligence in the production process, of the wide intellectual
+> context and long-range vision required to maintain a modern
+> industry. They confess their inability to grasp the crucial importance
+> of the moral values which are the motive power of capitalism.
+> Capitalism is based on self-interest and self-esteem; it holds
+> integrity and trustworthiness as cardinal virtues and makes them
+> payoff in the marketplace, thus demanding that men survive by means of
+> virtues, not of vices. It is this superlatively moral system that the
+> welfare statists propose to improve upon by means of preventive law,
+> snooping bureaucrats, and the chronic goad of fear.
+
+Meanwhile, note that a bunch of decades later, Greenspan helped grow
+exactly that sad state of affairs which he decries in this essay. So,
+what next?
+
+Next is not exactly much. Since we've remembered Orwell, we remark that
+he was correct in his prediction that "the proles" cannot come to have
+anything even faintly resembling political awareness[^6]. That said, it
+is ridiculous to believe that the boot can stamp the [human][humanity]
+face forever; the human will continue to live much despite this attack
+on integrity, and long after the unsustainable etatist will have rotten.
+
+[^1]: Samsung might or might not have intended to sell phones that blow
+    up, but regardless of Samsung's intention, terrorists might have
+    used them to their own purposes in airports.
+
+    Speaking of which, why do so-called terrorists blow up people in
+    airports? Is it, as they say on BBC, "senseless violence", or is it
+    really trying to purify the souls of Westerner heathens? And, more
+    importantly, does that really matter, as long as they kill a hundred
+    and instill fear in millions of others?
+
+[^2]: Did he mean "its"? This one looks like an OCR misscan.
+
+[^3]: The anecdote goes that in Sweden, (at least some) university
+    campuses give students a free coffee each afternoon. Nevermind that
+    some of them don't drink coffee, and nevermind that producing coffee
+    comes with a cost, here's your free coffee, signed and approved by
+    the committee of coffee-giving.
+
+    In Romania a while ago there was a similar much-derided programme
+    for public schools called "cornul și laptele" (the croissant and the
+    milk). I don't know what happened to that, but yes, it was the local
+    socialists' doing.
+
+[^4]: I.e. the fight against corruption, a very common phrase in Romania
+    nowadays.
+
+[^5]: In communist Romania they called this "rotația cadrelor", in the
+    USSR they called it "ротация кадров" and so on.
+
+[^6]: How did that saying go... [deșteaptă-te, române!][desteapta-te]
+    not now, not ever.
+
+[cauze-si-scopuri]: http://trilema.com/2015/causes-and-purposes/
+[freedom-is-slavery]: /posts/y03/04f-freedom-is-slavery.html
+[slither]: /posts/y02/048-slither-io-unfairness.html
+[humanity]: /posts/y01/032-your-worth-to-humanity.html
+[desteapta-te]: /posts/y03/054-desteapta-te-romane.html