The inestimable Paul Graham has another essay out: Great Hackers. Worth
reading. Go ahead, I'll wait.
Back already? Ok, good. I find a lot of what Paul writes to be
resonant. I especially liked his section on "nasty little problems" -
I think the elimination of nasty little problems, as opposed to
genuinely difficult and challenging ones, should be a top priority,
especially for free software developers. Longtime readers will not be
surprised to hear me categorize the auto* suite as a particularly rich
source of such nasty little problems, for all that it does a pretty
good job solving a set of real problems, and is a huge improvement
over what came before.
Paul seems to be addressing the issues at the scale of individuals or
small (startup) companies. I would like to see more attention given to
issues at a much broader scale: the interaction between hackers and
society as a whole.
One way for society to view its great hackers is as a resource,
comparable to a natural resource such as mines for valuable metals, or
fertile fields for agriculture. Most healthy societies try to convert
the potential of those resources into wealth. They plant good seed and
tend the land, rather than salting the fields. Of course, societies
vary in the extent to which they do a good job of this; famine is
much more common in Africa than in the West.
Societies vary even more widely in their ability to get good work out
of hackers. Paul explains fairly well what's needed: mostly, let us do
our thing and get the hell out of the way. I think his section "More
than Money" tells part of the story. I don't think hackers hate money,
but I do think we hate spending time hustling for money. There are
plenty of people who do, and they tend to become investment bankers
and the like. I don't think those people understand us very well.
There's a fair amount of emotional turmoil in my marriage right now,
and I've been taking refuge by spending time with a subject very dear
to my heart: font design.
In particular, I've been scanning ATF type specimen books and
carefully studying the designs therein. I now have a great scanner
(Epson 4870), and the scans at 2400 dpi really pick up the
detail, and let you see the quality of the printing.
I was especially surprised to compare the quality across the
decades. I have four books, one each from 1912, 1921, 1934, and 1941
(all collected by my father). The printing quality from 1912 is head
and shoulders above the rest. As a seat-of-the-pants estimate, I'd say
it's roughly equivalent to a 2000dpi digital printer.
I've especially grown to appreciate the work of Morris
Benton, the chief type designer at ATF for many years. I get the
feeling that he was positively obsessed with printing quality. His
father was a very gifted inventor, and worked on many machines used in
type design and typefounding. In particular, his pantographic
"delineating machine" and matrix engraver not only scaled a single
design to many sizes, but could also apply general affine
transformations, just like PostScript today.
One of the secrets revealed by close study of these specimen books is
how type scaled to different sizes. Most fonts today are designed at
one size, then enlarged or reduced using strictly mathematical
scaling. Master printers over the centuries, however, have long
understood that smaller fonts should have more robust features, while
larger ones can be more elegant and refined. Periodically, type
designers working with new technologies try to rediscover this fact,
but it always seems like an uphill battle, probably because of how
much extra work it takes to optically scale a font. Adobe is producing
many fine optically
scaled fonts now, but one gets the impression they're still a
small minority of their entire font catalog. Another important
example, from the world of free software no less, is the Computer
Modern fonts of TeX, which, while technically way ahead of their
time, are not considered especially appealing by serious typographers.
So it's especially interesting to learn that ATF used almost purely
automated techniques to produce different sizes of font from a single
"pattern plate". I came across an excellent article
by Patricia Cost which explains the process in considerable detail.
I'll try to strip out the mechanical and historical stuff and just
describe the underlying "algorithm". The scaling happens when a
matrix (or mold from which the actual metal type with raised letter
is cast) is engraved from a pattern plate.
The pattern plate is a piece of metal about 4 inches high, which
contains a raised outline of the letter. Placed in the matrix
engraving machine, a "follower," or stylus, traces the inside of this
outline. The motion of this follower describes a path.
At the same time, a high-speed drill traces a scaled version
of this path, cutting into the matrix. Through the mechanical
ingenuity of Linn Boyd Benton, the scale factors can be different for
horizontal and vertical movement. Typically, the pattern plate was
designed for a 36pt font size. To cut a matrix for a 6pt letter, the x
scaling would be a factor of 1.19 of the y scaling.
The path traced by the follower, though, isn't exactly the same as the
inner outline on the pattern plate, nor is the outline of the letter
engraved in the matrix exactly the same as the path of the drill. The
follower has a nonzero diameter, so the path it traces
is "shrunk" by half that diameter, so that the width of strokes is
reduced by one diameter. Similarly, the cutting tool has a nonzero
diameter, so the outline engraved into the matrix is "grown" by half
that diameter, so that stroke width is increased by one diameter. When
the ratio between these two diameters is the same as the scaling
factor, the outlines correspond closely (especially if the letter on
the pattern plate has slightly rounded, rather than perfectly square,
corners), and stroke weight should be identical (after scaling, of
However, by using a smaller or larger diameter follower, it's possible
to increase or decrease the stroke weight, respectively. And, after
studying the font books, I see that the typefounders at ATF did consistently apply this technique for scaling fonts. A typical recipe would be to use a grow radius of 100/ptsize - 3 units (on a 1000 unit/em grid), while applying a horizontal scaling of 1.18/ptsize + .967 (both additive factors chosen to normalize for 36pt design). It's worth noting that the Computer Modern fonts use a width scaling of about 1.3/ptsize, so the stretch of smaller sizes is even more exaggerated compared to the ATF example.
I want to write this stuff up, but to do it justice will require quite
a bit of time, especially to produce the illustrations. In the
meantime, this image of two lowercase a's from Lightline should
whet the appetite of you type fiends out there. The two images are
superimposed with a "difference" blend mode, so you can see two
outlines. The sharper image is an 18pt "a", scanned at 2400 dpi, and
scaled in the horizontal direction by a factor of 1.15. The fuzzer
image is a 6pt version of the same character, scanned at 2400 dpi,
then enlarged by a factor of 3x. Thus, 0.001" at that size corresponds
to 7.2 pixels. You should be able to see, then, that the 6pt version
is grown by a little less than a mil with respect to the 18pt version.
The good news is that it wouldn't be that hard to adapt this process
to the present-day practice of digital typography, and that it can be
almost entirely automated, so generating a good family of optically
scaled fonts wouldn't be that much more labor-intensive than drawing a
single good font (which is difficult enough as it is!)