diff options
authordefault <default@localhost.localdomain>2019-12-30 23:03:02 -0300
committerdefault <default@localhost.localdomain>2019-12-30 23:03:02 -0300
commit9fb9a529bbcf14d99c4aa7f8c809888bd8870608 (patch)
parentf3fbeabfe19453ed5979bf4607ef3a7079780711 (diff)
Apply some last-minute tweaks to fix a few remaining problems
- needle-binder-injection-printing didn't credit Magnus Larsson - the PDF generator was adding double spaces after incorrectly-formatted "i.e.", etc. - the PDF generator was producing tofu for blank lines in a `<pre>` block - Paragraphs in the PDF were sometimes butted too close to stuff above them - table headers weren't even bold - the DejaVu copyright wasn't included - I cleaned up the introduction and included links to the PDF and HTML-tarball forms - There were Markdown formatting errors in `cheap-frequency-detection` And I wrote one final note.
7 files changed, 96 insertions, 29 deletions
diff --git a/ b/
index f508c52..edca793 100755
--- a/
+++ b/
@@ -344,7 +344,8 @@ def text_out(fonts, t, style, s):
fonts[style['font-family']].text_out(t, style, s)
# Abbreviations not to put an extra space after
-abbrevs = {'Mr.', 'vs.', 'cf.', 'Jr.', 'pp.', 'Ms.', 'Dr.', 'p.', 'St.', '(St.'}
+abbrevs = {'Mr.', 'vs.', 'cf.', 'Jr.', 'pp.', 'Ms.', 'Dr.', 'p.', 'St.', '(St.',
+ 'etc.', 'i.e.', 'e.g.', '(i.e.', '(e.g.'}
spacepunct = tuple('.?!:;')
def start_box(x, y, font_size):
@@ -353,7 +354,7 @@ def start_box(x, y, font_size):
def render_text(c, t, text, style, fonts, abbrevs=abbrevs, spacepunct=spacepunct):
max_x = pagesize[0] - right_margin
pre = style['white-space'] == 'pre'
- words = (re.split('([^\n]+\n)', text) if pre else
+ words = (re.split('([^\n]*\n)', text) if pre else
re.split('[ \n\r\t]+', text))
x, y = t.get_x(), t.get_y()
font_family = style['font-family']
@@ -434,7 +435,7 @@ block_fonts = {
extra_padding_ems_above = dict(h2=0.5, h3=0.5, h4=0.5, h5=0.5, h6=0.5, pre=1,
- blockquote=0.5)
+ blockquote=0.5, p=0.33)
block_colors = {
'h1': 'rgba(136,0,0,.794)',
@@ -492,6 +493,7 @@ inline_fonts = {'i': italicize,
'code': codify,
'b': embolden,
'strong': embolden,
+ 'th': embolden, # hey, it's *something*
def get_link(node):
@@ -627,16 +629,17 @@ def render(pagenos, corpus, bookmark, c, xml, fonts):
def read_plaintext(bookmarkname, filename):
root = ET.XML('<html><title></title>'
- + '<body><pre></pre></body>'
+ + '<body><h1></h1><pre></pre></body>'
+ '</html>')
- root[0].text = bookmarkname
+ title = root[0]
+ assert title.tag == 'title'
body = root[1]
- assert body.tag == 'body'
- for paragraph in open(filename).read().decode('utf-8').split('\n\n'):
- ptag = ET.Element('p')
- ptag.text = paragraph
- body.append(ptag)
+ h1 = body[0]
+ assert h1.tag == 'h1'
+ title.text = h1.text = bookmarkname
+ pre = body[1]
+ assert pre.tag == 'pre'
+ pre.text = open(filename).read().decode('utf-8')
return root
def descendant_nodes(etnode):
diff --git a/ b/
index 2c1f1f0..ba18d10 100644
--- a/
+++ b/
@@ -1,10 +1,14 @@
-Dercuano is a self-contained downloadable HTML tarball containing a
+[Dercuano is a self-contained downloadable HTML tarball][Dercuano] containing a
book’s worth of disorganized notes I’ve made over the last few years.
-As an alternative option for computer systems incapable of handling a
-downloadable HTML tarball, I've hacked together an inferior PDF
-rendering of it as well, which comes to some 4000 pages, formatted for
+As an alternative option for printing and for
+computer systems incapable of handling a
+downloadable HTML tarball, I've hacked together [an inferior PDF
+rendering of it][PDF] as well, which comes to some 3900 pages, formatted for
comfortable reading on hand computers.
Buried among the errors, red herrings, and ratholes, there
are numerous wonderful insights (perhaps even a few of them original),
many fascinating facts about the world (many of which are true, and a
@@ -48,7 +52,7 @@ Much of what is written here is wrong in a variety of ways.
On the other hand, some of it is correct. Of the correct part, most
is unoriginal — sometimes I’m just taking notes on well-established
concepts, and sometimes I’m laboriously rediscovering things that are
-already obvious to others — while some small part is original.
+already obvious to others — while some small part is both original and correct.
Unfortunately, I don’t know which part.
Most of these notes are about things I barely understood, or
@@ -65,7 +69,7 @@ Many of the dates are only approximate.
One of the distinguishing features of scholarly publications, as currently
understood, is that they are consciously situated with regard to the
existing state of knowledge: they are aware of the state of the art;
-build on its successes (rather than falling victim to known
+they build on its successes (rather than falling victim to known
pitfalls); they explicitly describe how they relate to that existing
knowledge, declaring which pieces of its foundation are sourced from
existing work and what its novel contributions are; and they give
@@ -84,7 +88,7 @@ Dercuano consists of such attempts. This is not due to malice, but
simply because doing scholarly work properly is a lot of effort, and I
haven’t finished that work, and in fact I’ve given up on ever finishing it for
most of the notes in Dercuano. From a scholarly perspective, Dercuano
-is best understood as a collection of unfinished notes on ideas that
+is best understood as a collection of working notes on ideas that
mostly seem promising and merit further investigation, which could lead to
a scholarly publication, rather than a scholarly publication in itself.
@@ -105,9 +109,15 @@ exposed and done in the open even before reaching the level of
a scholarly publication. I am fortunate to have been in the position
where I could do this.
+Often in Dercuano I refer to something being "published". By this I
+generally mean "made public". There's a current fad in academia (over
+the last, say, half century) to use "published" to mean "brought up to
+the standards of scholarly publication and approved as such by means
+of scholarly peer review". This is usually not what I mean.
### Size and public-domain dedication ###
-On 2019-12-28 as I write this, the Dercuano tarball is 3.6 megabytes
+On 2019-12-30 as I write this, the Dercuano tarball is 3.6 megabytes
and contains some 1.2 million words in 882 notes,
about 3500 paperback pages’
worth of text. The PDF rendering mentioned above uses a page size
@@ -118,17 +128,23 @@ As far as I’m concerned, everyone is free to redistribute Dercuano, in
whole or in part, modified or unmodified, with or without credit; I
waive all rights associated with it to the maximum extent possible
under applicable law. Where applicable, I abandon its copyright to
-the public domain. I wrote and published Dercuano in Argentina.
+the public domain. I wrote and published Dercuano in Argentina in 2019.
The exception to the above public-domain dedication is the ET Book
font family used, licensed under [the X11
license](liabilities/LICENSE.ETBook). This doesn’t impede you from
redistributing or modifying Dercuano but does prohibit you from
removing the font’s copyright notice and license (unless you also
-remove the font).
-(The source repository also contains some other fonts which are used
-to produce a PDF, but those are not included in the HTML tarball.)
+remove the font). The PDF embeds part of FreeFont and of the DejaVu
+fonts, [whose copyright notices are also
+included](liabilities/dejavu-copyright), but DejaVu and FreeFont are
+not used in the HTML tarball.
+The note on [Nova RDOS](notes/nova-rdos.html) quotes significant
+amounts of source code from the Data General Nova RDOS operating
+system for the purpose of study and criticism ("I don't know how you
+start designing an operating system in 1977 and screw up the design
+this badly").
### Gitlab ###
diff --git a/markdown/cheap-frequency-detection b/markdown/cheap-frequency-detection
index 3ad0b82..b284bc2 100644
--- a/markdown/cheap-frequency-detection
+++ b/markdown/cheap-frequency-detection
@@ -303,7 +303,7 @@ then you can use their Pythagorean sum to precisely compute the energy
in that frequency component of the signal.
If you’re dumping the decimated samples into a four-sample circular
-buffer x[0], x[1], x[2], x[3], with some incrementing pointer xp:
+buffer x\[0], x\[1], x[2], x[3], with some incrementing pointer xp:
x[xp++ & 3] = new_sample;
@@ -311,8 +311,8 @@ Then you could imagine using x[xp], x[xp-1], x[xp-2], and x[xp-3] with
the appropriate modulo math. However, this is totally not necessary,
because you actually don’t care how these sinusoids are aligned with
the signal; you only care that they are orthogonal. It’s totally
-valid to compute one phase component as x[0] - x[2] and the other as
-x[1] - x[3] and then compute their Pythagorean sum:
+valid to compute one phase component as x\[0] - x[2] and the other as
+x\[1] - x[3] and then compute their Pythagorean sum:
return pythsum(x[0] - x[2], x[1] - x[3]);
diff --git a/markdown/dercuano-hand-computers b/markdown/dercuano-hand-computers
index be550a7..c4ef429 100644
--- a/markdown/dercuano-hand-computers
+++ b/markdown/dercuano-hand-computers
@@ -1137,4 +1137,41 @@ generation croaked on it. Gotta regenerate the HTML!
Okay, adding colors to headers wasn't that hard either, although
there's some kind of problem with the color's alpha --- it's not
applied to the first line of the header, just the second and
-subsequent lines. \ No newline at end of file
+subsequent lines.
+While I was at it, I spent five minutes hacking in a font-size hack
+for file `big-if-true`, and then added a little top margin to
+paragraphs and made `<th>` elements bold. And I started writing a
+postscriptum for Dercuano.
+All right, I have two hours left, so I guess I need to accept most of
+the above problems now, and only fix things if I find something
+I see file `iterative-string-formatting` has some Devanagari tofu in
+it. Apparently my font cascades lack Devanagari in the
+typewriter-font cascade. That's too bad. (Maybe it's actually
+mojibake, because the Devanagari is showing up as Chinese!) File
+`magnetoresistive-relay` has an extra space in "F.B. Morse". Too bad.
+It also has an extra space in "(i.e. 250ps", which I think I'll fix;
+even though the "i.e." should be followed by a comma, I've made that
+error in many notes. APL `⍴` in file `typed-apl` produces tofu, but
+only in the serif font (I guess it's missing from the cascade); too
+The title of file `byte-stream-gui-applications` was wrong; fixed.
+In file `nova-rdos` there is tofu; I think this is because it's mostly
+encoded with CRLFs but occasionally has a lone LF. I'm not sure how
+this ends up producing tofu in the PDF but it does. Oh, yes I do. My
+`<pre>` pattern didn't handle blank lines correctly; fixed. Linking
+it in the intro text is making it appear out of sequence, which is too
+bad I guess.
+File `cheap-frequency-detection` has some array indices that are
+incorrectly formatted as links; fixed, I hope.
+I've switched to just using the normal line-wrapping code for
+formatting text files (in particular, the font licenses).
+I guess that's about it!
diff --git a/markdown/needle-binder-injection-printing b/markdown/needle-binder-injection-printing
index 1caac14..be9b79a 100644
--- a/markdown/needle-binder-injection-printing
+++ b/markdown/needle-binder-injection-printing
@@ -210,3 +210,8 @@ yielding and/or porous to get the needles into it in the first place.
Selectively dissolving styrofoam with acetone, ethyl acetate, or
gasoline is one example, though lacking in filler; EVA foam is another
candidate material.
+Magnus Larsson's 2009 design provocation "Dune: Arenaceous
+Anti-Desertification Architecture" suggested using this process to
+build underground structures by selectively grouting soil, which would
+then be revealed by aeolian erosion. \ No newline at end of file
diff --git a/markdown/powder-bed-3d-printing b/markdown/powder-bed-3d-printing
index 17435f2..1321e88 100644
--- a/markdown/powder-bed-3d-printing
+++ b/markdown/powder-bed-3d-printing
@@ -240,7 +240,8 @@ polyvalent cations (though there are many different types of pectin
and many different types of carrageenan, and they can sometimes react
in opposite ways to pH changes), and aluminum sulfate precipitates
insoluble, gelatinous aluminum hydroxide when the water is
-insufficiently acidic.
+insufficiently acidic. Things like alcohol or salt may be sufficient
+to precipitate some of these by reducing the amount of water.
### Nucleation control ###
diff --git a/triples b/triples
index 53915ea..be1d321 100644
--- a/triples
+++ b/triples
@@ -3615,6 +3615,7 @@ cardboard-furniture written 2019-08-01
concerns independence garbage cardboard materials manufacturing cardboard household
needle-binder-injection-printing written 2019-08-05
+ updated 2019-12-30
concerns materials manufacturing 3d-printing chemistry flux-deposition
concerns digital-fabrication
@@ -3933,6 +3934,7 @@ extending-heckballs written 2019-11-26
byte-stream-gui-applications written 2019-11-29
updated 2019-11-30
+ titled Byte-stream+GUI+applications
concerns programming protocols sa guis graphics
incremental-roller-comb-forming written 2019-11-27
@@ -4013,3 +4015,6 @@ sulfuric-acid-dehydration-printing written 2019-12-18
sorting-in-logic written 2019-12-28
concerns prolog sorting algorithms programming performance
+finishing-dercuano written 2019-12-30
+ concerns dercuano