Feb 19

The simplest possible method syntax in C

I’ve been thinking a lot about language design lately. Part of this comes from my quite successful acquisition of Go and my mostly failed attempt to learn Rust. These languages make me question premises I’ve held for a long time, and that questioning has borne some fruit.

In the remainder of this posting I will describe a simple syntax extension in C that could be used to support a trait-centered object system similar to Rust’s (or even Go’s). It is not the whole design, but it is a simple orthogonal piece that could fit with several different possible designs.

Continue reading

Feb 17

Things Every Hacker Once Knew: 1.9

I’ve shipped another revision of Things Every Hacker Once Knew

The pace of suggested additions and corrections has slowed down a lot; I think this thing is stabilizing.

I gave in and added the one bit of paper-tape lore people have been bugging me to include, about why DEL is 0xb1111111. Learning that the NSA still distributed crypto keys on paper tape until last year smashed that one through my relevance filter.

There’s a short addition on the Trek family of games, a mention of xyzzy, and some minor corrections and typo fixes as well.

Feb 14

Things Every Hacker Once Knew: 1.8

Heritage games. The legacy of all-uppercase terminals. Where README came from. What “core” is. The ARPANET. Monitoring your computer with a radio. And more…

Things Every Hacker Once Knew

The response to this document has been nothing short of astonishing. More than half of my non-spam mail over the last three weeks has been people writing to suggest additions and corrections or just to thank me. The count of respondents must be over a hundred by now.

Continue reading

Feb 13

loccount: A faster SLOC utility

Here’s my first new project in a while – loccount, inspired by David A. Wheeler’s sloccount tool but much faster and with broader language coverage.

I actually wrote this as a learning exercise in the Go language. You can find more details in my NTPsec blog post on Grappling With Go.

If you like it, please remember that open source may be free but my time is not and join my Patreon feed.

Feb 09

Things Every Hacker Once Knew: 1.7

Did I say Things Every Hacker Once Knew was stabilizing? Silly me…

Here’s the 1.7 version. Substantial new material on the BBS scene – this is my answer to the people who have been bugging me to at least mention XMODEM/YMODEM/ZMODEM.

The expository approach I’m taking is to bin all of UUCP, the BBS scene, and commercial dialup services like AOL as parallel contemporaneous attempts to figure out what kind of store-and-forward messaging people actually wanted.

Feb 08

Things Every Hacker Once Knew: 1.6

The newest version is here.

I think it’s stabilizing. The rate of comments and submissions has been dropping.


     How VDTs explain some heritage programs, and how bitmapped
     displays eventually obsolesced them. Explain why the ADM-3
     was called "dumb" even though it was smart.

There’s also a mention of RS-323 on network gear.

Still nothing about XMODEM/YMODEM/ZMODEM – that’s probably the most requested addition left, but I really don’t see what could be interesting to say about them at this late date.

The reaction to this on my Patreon feed has been impressive. It seems to have driven $300-$400 of new subscriptions.

Feb 06

Things Every Hacker Once Knew: 1.5

The 1.5 revision of Things Every Hacker Once Knew is out.

Alas, I had to drop the reference to the Space Cadet keyboard. Turns out it shipped a 32-bit status word and this had nothing to do with 9-bit bytes at all. The indirect reference to the SAIL extended ASCII keyboard is still in.

Patrick Maupin’s revelation about the AT prefix is summarized.

The fact that UUCP was a hack around the old two-tier structure of phone rates is mentioned.

There’s more about TTL serial. Gary Miller, my very hardware-savvy lieutenant and now acting lead on the GPSD project, thinks this didn’t become a common way to ship data off peripherals and daughterboards until after 2000, with GPS chips leading the way. This matches my recollection, but I was pretty oblivious about that sort of thing until the last decade so I don’t consider my recollection very good evidence. Commentary an correction invited.

I’d like to pin down the year cathode-ray tubes disappeared. I know the leading display vendors ceased production in 2005, but I think the transition might have been as much as two years sooner. Again, corrections welcomed.

Feb 05

In defense of recording folk history

One of my regular commenters on A&D, Random832, wrote the following in response to my inclusion criteria for Things Every Hacker Once Knew.

On “common knowledge at the time”, I think the problem with dismissing things as “fascinating but obscure trivia” means too much exclusion of the real facts behind things that were already forgotten or inaccurately known, and reduces its value as a historical document. There’s also the fact that the intersection between, say, the Lisp and Unix hacker spaces seems to have been tenuous enough to cause some things to have been lost in translation […] – maybe there was never really anything every hacker once knew, just some things some hackers once knew, and other things other hackers once knew, all worth preserving. I think arbitrarily drawing lines around “provides too much historical context” runs the risk of the document being better described as “Things Eric Once Knew”.

I think this comment raises real issues that deserve to be squarely engaged. I’ve omitted one sentence that I think is based on a a factual misunderstanding in order to focus on the large questions.

Continue reading

Feb 03

Things Every Hacker Once Knew: 1.4

New version 1.4 at:


New content in this one is an expanded section about outboard modems, their descendants in today’s technology, and the curious survival of the Hayes AT command set.

I had actually received a couple of previous requests to add material on the Hayes AT convention, but rejected them on the grounds that it had no relevance to current tech. This turned out to be not quite true!

Once again I emphasize that this document was not written as a nostalgia trip, but rather to assist retrospective understanding by younger hackers so they can make sense of the fossils and survivals still embedded in current technology.

The response to this document has been remarkable. I’ve received a flood of feedback and gratitude in my mailbox, often from people much more sentimental about the old days than I am.

I invite everyone who values this content to contribute at my Patreon page; this is exactly the kind of thing I couldn’t do if I couldn’t pay my Internet bills or had to get a $DAYJOB, and I’m currently in my sixth month of operating without institutional funding. $5 or $10 a month from enough people could fix that.

Your dollars will also go to fixing critical infrastructure, so please give generously – the civilization you save could be your own.

Jan 29

Things Every Hacker Once Knew: 1.2

The response to this piece has been remarkably broad and positive. I have to note, though, that I didn’t write it as a nostalgia trip – I don’t miss underpowered computers, primitive tools, and tiny low-resolution displays.

At least people did notice that it isn’t a you-kids-get-off-my-lawn grumble. I think it’s good for younger hackers to know these things, but it’s no fault of theirs that the technological context has changed so much that they don’t absolutely need to to get work done. In fact it’s a sign of progress.

Yes, you’ll occasionally trip over old tech for which forgotten common knowledge is important – and RS-232, in particular, is still important in niche applications. But the real reason to remember these things is less tangible, and unfortunately difficult for many people to talk about without sliding into sentimentality.

In any kind of craft or profession, I think knowing the way things used to be done, and the issues those who came before you struggled with, is quite properly a source of pride and wisdom. It gives you a useful kind of perspective on today’s challenges.

The real reason I wrote this is to encourage that kind of perspective.

Updated version here. With: more about the persistence of octal, current-loop ASR-33s, 36-bit machines and their lingering influence, ASCII shift, a bit more about ASCII-1963, and some error corrections.

Jan 25

Tools generate culture: a trivial example

If I were the kind of person who grumbles about feeling ancient, I’d have been doing it today.

I got reminded that younger hackers don’t know the bit structure of ASCII like their tongues know the back of their teeth. Man, we all grokked that back when I was new at this.

Nowadays not so much. I’ve actually seen younger hackers be confused about, say, how to generate a NUL from the keyboard. And I’m all, like, “How can you not know this?”

I’m bothering to post because I think I’ve figured out why this changed. The kids are OK, it’s conditions around them that have shifted.

Continue reading

Jan 13

Rust and the limits of swarm design

In my last blog post I expressed my severe disappointment with the gap between the Rust language in theory (as I had read about it) and the Rust language in practice, as I encountered it when I actually tried to write something in it.

Part of what I hoped for was a constructive response from the Rust community. I think I got that. Amidst the expected volume of flamage from rather clueless Rust fanboys, several people (I’m going to particularly call out Brian Campbell, Eric Kidd, and Scott Lamb) had useful and thoughtful things to say.

I understand now that I tested the language too soon. My use case – foundational network infrastructure with planning horizons on a decadal scale – needs stability guarantees that Rust is not yet equipped to give. But I’m somewhat more optimistic about Rust’s odds of maturing into a fully production-quality tool than I was.

Still, I think I see a problem in the assumptions behind Rust’s development model. The Rust community, as I now understand it, seems to me to be organized on a premise that is false, or at least incomplete. I fear I am partly responsible for that false premise, so I feel a responsibility to address it square on and attempt to correct it.

Continue reading

Jan 12

Rust severely disappoints me

I wanted to like Rust. I really did. I’ve been investigating it for months, from the outside, as a C replacement with stronger correctness guarantees that we could use for NTPsec.

I finally cleared my queue enough that I could spend a week learning Rust. I was evaluating it in contrast with Go, which I learned in order to evaluate as a C replacement a couple of weeks back.

Continue reading

Jan 01

How to educate me about prejudice in the open-source community

Every once in a while I post something just to have it handy as a reference for the next time I have to deal with a galloping case of some particular kind of sloppy thinking. That way I don’t have to generate an individual explanation, but can simply point at my general standards of evidence.

This one is about accusations of sexism, racism, and other kinds of prejudice in the open-source culture.

Continue reading

Dec 14

Hey, Democrats! We need you to get your act together!

It’s now just a bit over a month since Election Day, and I’m starting to be seriously concerned about the possibility that the U.S. might become a one-party democracy.

Therefore this is an open letter to Democrats; the country needs you to get your act together. Yes, ideally I personally would prefer your place in the two-party Duverger equilibrium to be taken by the Libertarian Party, but there are practical reasons this is extremely unlikely to happen. The other minor parties are even more doomed. If the Republicans are going to have a counterpoise, it has to be you Democrats.

Donald Trump’s victory reads to me like a realignment election, a historic break with the way interest and demographic groups have behaved in the U.S. in my lifetime. Yet, Democrats, you so far seem to have learned nothing and forgotten nothing. Indeed, if I were Donald Trump I would be cackling with glee at your post-election behavior, which seems ideally calculated to lock Trump in for a second term before he has been sworn in for the first.

Stop this. Your country needs you. I’m not joking and I’m not concern-trolling. The wailing and the gnashing of teeth and the denial of reality have to end. In the rest of this essay I’m not going to talk about right and wrong and ideology, I’m going to talk about the brutal practical politics of what you have to do to climb out of the hole you are in.

Continue reading

Dec 07

Spelunking the alt-right

Recently, on a mailing list I frequent, one of the regulars uttered the following sentence: “I’m told Breitbart is the preferred news source for the ‘alt-right’ (KKK and neo-nazis)”.

That was a pretty glaring error, there.

I was interviewed on Breitbart Tech once. I visit the site occasionally. I am not affiliated with the alt-right, but I’ve been researching the recent claims about it. So I can supply some observations from the ground.

First, while I’m not entirely sure of everything the alt-right is (it’s a rather amorphous phenomenon) it is not the KKK and neo-Nazis. The most that can truthfully be said is that ‘alt-right’ serves as a recent flag of convenience to which some old-fashioned white supremacists are busily trying to attach themselves.

Also, the alt-right is not Donald Trump and his Trumpkins, either. He’s an equally old-fashioned populist continuous with Willam Jennings Bryan and Huey Long. If you tossed a bunch of alt-right memes at him, I doubt he’d even understand them, let alone agree.

The defining characteristic of the alt-right is, really, corrosive snarkiness. To the extent an origin can be identified, it was as a series of message-board pranks on 4chan. There’s no actual ideological core to it – it’s a kind of oppositional attitude-copping without a program, mordantly nasty but unserious.

There’s also some weird occultism attached – the half-serious cult of KEK, aka Pepe, who may or may not be an ancient Egyptian frog-god who speaks to his followers via numerological coincidences. (Donald Trump really wouldn’t get that part.)

Some elements of the alt-right are in fact racist (and misogynist, and homophobic, and other bad words) a la KKK/Nazi, but that’s not a defining characteristic and it’s anyway difficult to tell the genuine haters from those for whom posing as haters is a form of what 4chan types call “griefing”. That’s social disruption for the hell of it.

It is worth noting that another part of what is going on here is a visceral rejection of politically-correct leftism, one which deliberately inverts its premises. The griefers pose as racists and misogynists because they think it’s the most oppositional stance they can take to bullies and rage-mobbers who position themselves as anti-racists and feminists.

My sense is that the true haters are a tiny minority compared to the griefers and anti-PC rejectionists, but the griefers are entertained by others’ confusion on this score and don’t intend to clear it up.

Whether the alt-right even exists in any meaningful sense is questionable. To my anthropologist’s eye it has the aspect of a hoax (or a linked collection of hoaxes) being worked by 4chan griefers and handful of more visible provocateurs – Milo Yiannopolous, Mike Cernovich, Vox Day – who have noticed how readily the mainstream media buys inflated right-wing-conspiracy narratives and are working this one for the lulz. There’s no actual mass movement behind their posturing, unless you think a thousand or so basement-dwelling otaku are a mass movement.

I know Milo Yannopolous slightly – he is who interviewed me for Beitbart – and we have enough merry-prankster tendency in common that I think I get how his mind works. I’m certain that he, at any rate, is privately laughing his ass off at everyone who is going “alt-right BOOGA BOOGA!”

And there are a lot of such people. What these provocateurs are exploiting is media hysteria – the alt-right looms largest in the minds of self-panickers who project their fears on it. And of course in the minds of Hillary Clinton’s hangers-on, who would rather attribute her loss to a shadowy evil conspiracy than to a weak candidate and a plain-old bungled campaign.

I’m worried, however, that that the alt-right may not remain a loose-knit collection of hoaxes – that the self-panickers are actually creating what they fear.

For there is a deep vein of anti-establishment anger out there (see Donald Trump, election of). The alt-right (to the limited and conditional extent it now exists) could capture that anger, and its provocateurs are doing their best to make you think it already has, but they’re scamming you – they’re fucking with your head. The entire on-line ‘alt-right’ probably musters fewer people than the Trumpster’s last victory rally.

It’s a kind of dark-side Discordian hack in progress, and I’m concerned that it might succeed. Vox Day is trying to ideologize the alt-right, actually assemble something coherent from the hoaxes. He might succeed, or someone else might. Draw some comfort that it won’t be the Neo-Nazis or KKK – they’re real fanatics of the sort the alt-right defines itself by mocking. Mein Kampf and ironic nihilism don’t mix well.

The best way to beat the “alt-right” is not to overestimate it, not to feed it with your fear. If you keep doing that, the vast majority of the rootless and disaffected who have never heard of it might decide there’s a strong horse there and sign on.

Oh, and a coda about Breitbart: anyone who thinks Breitbart is far right needs to get out of their mainstream-media bubble more. Compared to sites like WorldNetDaily or FreeRepublic or TakiMag or even American Thinker, Breitbart is pretty mild stuff.

All those fake-news allegations against Breitbart are pretty rich coming from a media establishment that gave us Rathergate, “Hands up don’t shoot!”, and the “Jackie” false-rape story and was quite recently exchanging coordination emails with the Clinton campaign. Breitbart isn’t any more propagandistic than CBS or Rolling Stone, it’s just differently propagandistic.

Dec 02

Some of my blogging has moved

I’ve been pretty quiet lately, other than short posts on G+, because I’ve been grinding hard on NTPsec. We’re coming up on a 1.0 release and, although things are going very well technically, it’s been a shit-ton of work.

One consequence is the NTPsec Project Blog. My first major post there expands on some of the things I’ve written here about stripping crap out of the NTP codebase.

Expect future posts on spinoff tools, the NTPsec test farm, and the prospects for moving NTPsec out of C, probably about one a week. I have a couple of these in draft already.

Sep 27

Twenty years after

I just shipped what was probably the silliest and most pointless software release of my career. But hey, it’s the reference implementation of a language and I’m funny that way.

Because I write compilers for fun, I have a standing offer out to reimplement any weird old language for which I am sent a sufficiently detailed softcopy spec. (I had to specify softcopy because scanning and typo-correcting hardcopy is too much work.)

In the quarter-century this offer has been active, I have (re) implemented at least the following: INTERCAL, Michigan Algorithmic Decoder, and a pair of obscure 1960s teaching languages called CORC and CUPL, and an obscure computer-aided-instruction language called Pilot.

Pilot…that one was special. Not in a good way, alas. I don’t know where I bumped into a friend of the language’s implementor, but it was in 1991 when he had just succeeded in getting IEEE to issue a standard for it – IEEE Std 1154-1991. He gave me a copy of the standard.

I should have been clued in by the fact that he also gave me an errata sheet not much shorter than the standard. But the full horror did not come home to me until I sat down and had a good look at both documents – and, friends, PILOT’s design was exceeded in awfulness only by the sloppiness and vagueness of its standard. Even after the corrections.

Continue reading