Jan 26

Missing documentation and the reproduction problem

I recently took some criticism over the fact that reposurgeon has no documentation that is an easy introduction for beginners.

After contemplating the undeniable truth of this criticism for a while, I realized that I might have something useful to say about the process and problems of documentation in general – something I didn’t already bring out in How to write narrative documentation. If you haven’t read that yet, doing so before you read the rest of this mini-essay would be a good idea.

“Why doesn’t reposurgeon have easy introductory documentation” would normally have a simple answer: because the author, like all too many programmers, hates writing documentation, has never gotten very good at it, and will evade frantically when under pressure to try. But in my case none of that description is even slightly true. Like Donald Knuth, I consider writing good documentation an integral and enjoyable part of the art of software engineering. If you don’t learn to do it well you are short-changing not just your users but yourself.

So, with all that said, “Why doesn’t reposurgeon have easy introductory documentation” actually becomes a much more interesting question. I knew there was some good reason I’d never tried to write any, but until I read Elijah Newren’s critique I never bothered to analyze for the reason. He incidentally said something very useful by mentioning gdb (the GNU symbolic debugger), and that started me thinking, and now think I understand something general.

Continue reading

Jan 24

30 Days in the Hole

Yes, it’s been a month since I posted here. To be more precise, 30 Days in the Hole – I’ve been heads-down on a project with a deadline which I just barely met. and then preoccupied with cleanup from that effort.

The project was reposurgeon’s biggest conversion yet, the 280K-commit history of the Gnu Compiler Collection. As of Jan 11 it is officially lifted from Subversion to Git. The effort required to get that done was immense, and involved one hair-raising close call.

Continue reading

Dec 23

The Great Inversion

There’s a political trend I have been privately thinking of as “the Great Inversion”. It has been visible since about the end of World War II in the U.S., Great Britain, and much of Western Europe, gradually gaining steam and going into high gear in the late 1970s.

The Great Inversion reached a kind of culmination in the British elections of 2019. That makes this a good time, and the British elections a good frame, for explaining the Great Inversion to an American audience. It’s a thing that is easier to see without the distraction of transient American political issues.

(And maybe I have an easier time seeing the pattern because I lived in Great Britain as a child. British politics is more intelligible to me than to most Americans because of that early experience.)

To understand the Great Inversion, we have to start by remembering what the Marxism of the pre-WWII Old Left was like — not ideologically, but sociologically. It was an ideology of, by, and for the working class.

Continue reading

Nov 17

Some places I won’t go

A few minutes ago I received a request by email from a conference organizer who wants me to speak at an event in a foreign country. Unfortunately, the particular country has become a place I won’t go.

Having decided that I want my policy and my reasoning to be publicly known, I reproduce here the request and my reply. I withhold the requester’s name for his protection.

Continue reading

Nov 10

Grasping Bloomberg’s nettle

Michael Bloomberg, the former Mayor of New York perhaps best known for taking fizzy drinks, and now a Democratic presidential aspirant, has just caused a bit of a kerfuffle by suggesting that minorities be disarmed to keep them alive.

I think the real problem with Bloomberg’s remark is not that it reads as shockingly racist, it’s that reading it that way leaves us unable to deal with the truth he is telling. Because he’s right; close to 95% of all gun murders are committed by minority males between 15 and 25, and most of the victims are minorities themselves. That is a fact. What should we do with it?

Continue reading

Sep 28

The dream is real

Elon Musk’s new Starship is not the tall skinny pressurized-aluminum cylinder we’re used to thinking of a real rocket, but a fat cigar-shaped thing made of stainless steel, with tail fins.

I just listened to an elaborate economic and engineering rationale for this. And I don’t believe a word of it.

It had to be that way because Elon Musk grew up on the same Golden Age science fiction magazine cover illustrations I did, and it looks exactly like those.

Has tailfins. Freaking tailfins. And lands on a pillar of fire just like God and Robert Heinlein (PBUH) intended.

The dream is real.

Sep 14

Gratitude for Beto

Beto O’Rourke is a pretty risible character even among the clown show that is the 2020 cycle’s Democratic candidate-aspirants. A faux-populist with a history of burglary and DUI, he married the heiress of a billionaire and money-bombed his way to a seat in the House of Representatives, only to fail when he ran for the Senate six years later because Texas had had enough of his bullshit. Beneath the boyish good looks on which he trades so heavily, his track record reveals him to be a rather dimwitted and ineffectual manchild with a severe case of Dunning-Kruger effect.

Beto’s Presidential aspirations are doomed, though he and the uncontacted aborigines of the Andaman Islands are possibly the only inhabitants of planet Earth who do not yet grasp this. Before flaming out of the 2020 race to a life of well-deserved obscurity, however, Beto has done the American polity one great service for which I must express my most sincere and enduring gratitude.

Continue reading

Sep 04

Be the America Hong Kong thinks you are

I think this is my favorite Internet meme ever.

Yeah, Hong Kong, we actually have a problem with Communist oppression here, too. Notably in our universities, but metastasizing through pop culture and social media censorship too. They haven’t totally captured the machinery of state yet, but they’re working on that Long March all too effectively.

And you are absolutely right when you say you need a Second-Amendment-equivalent civil rights guarantee. Our Communists hate that liberty as much as yours do – actually, noticing who is gung-ho for gun confiscation is one of the more reliable ways to unmask Communist tools.

We need to be the America you think we are, too. Some of us are still trying.

Aug 24

The Order of Defenders

Officiant: “One comes before us today who wishes to become a Sworn Brother. Let him approach.”

Officiant: “Are there two Brothers present who will affirm that the candidate is of sound mind and good character, being aware that the penalty for error in this judgment is expulsion and disgrace?”

Upon hearing affirmations, the officiant continues:

“Very well. Aspirant. Take your firearm in your dominant hand. Raise it in the posture I now demonstrate, and repeat after me. After each line, the assembled Brothers will affirm with one voice.”

My gun protects the weak.


My gun speaks for liberty.


My gun defends myself, my neighbors and my nation.


My gun guards civilization.


With this oath I become a Sworn Brother of the Order of Defenders.


I will defend, and teach others to defend themselves.


I will shoot neither in anger nor haste nor from any sort of intoxication, but in grave knowledge of the consequences.


When a Sworn Brother calls for aid in defending, I will answer.


These things I swear by all I hold sacred.


Following the initiation, all repair to a shooting range for convivial practice.

I wrote the above after thinking about Rudyard Kipling’s Ritual of the Iron Ring for newly-graduated engineers.

Rituals like this exist to express and formalize what is best in us.

The Order of Defenders does not exist. Perhaps it should.

Aug 17

How the D candidates would introduce themselves at the next debate if they were honest

Hi, I’m Joe Biden. I’m the perfect apparatchik – no principles, no convictions, and no plan. I’m senile, and I have a problem with groping children. But vote for me anyway because orange man bad.

Hi, I’m Kamala Harris. My white ancestors owned slaves, but I use the melanin I got from my Indian ancestors to pretend to be black. My own father has publicly rebuked me for the pandering lies I tell. I fellated my way into politics; put me into the White house so I can suck even more!

Hi, I’m Elizabeth Warren. Even though I’m as white as library paste, I pretended to be an American Indian to get preferment. My research on medical bankruptcies was as fraudulent as the way I gamed the racial spoils system. So you should totally trust me when I say I’m “capitalist to my bones”!

Hi, I’m Bernie Sanders. I honeymooned in the Soviet Union. I’m an unreconstructed, hammer-and-sickle-worshiping Communist.

Hi, I’m Kirsten Gillibrand. I used to be what passes for a moderate among Democrats – I even supported gun rights. Now I’ve swung hard left, and will let you just guess whether I ever had any issue convictions or it was just pandering all the way down. Tee-hee!

Hi, I’m Amy Klobuchar, and I’ve demonstrated my grasp on the leadership skills necessarily for the leader of the Free World by being notoriously abusive towards my staff.

Hi, I’m Robert Francis O’Rourke. I’m occupying the “imitate the Kennedy” lane in this race, and my credentials for it include DUI and fleeing an accident scene. The rumors that I’m a furry are false; the rumors that I’m a dimwitted child of privilege are true. But vote for me anyway, crucial white-suburban-female demographic, because I have such a winning smile!

Hi, I’m Pete Buttigieg. I was such a failure as the mayor of South Bend that my own constituents criticize me for having entered this race, but the Acela Corridor press loves me because I’m fashionably gay. And how right they are; any candidate you choose is going to bugger you up the ass eventually, but I’ll do it like an expert!

Hi, I’m Bill de Blasio. I’m as Communist as Bernie, but I hide it better. And if Pete thinks his constituents don’t want him in this race? Hold…my…beer!

Hi, I’m Cory Booker, and I’m totally not gay. OK, maybe I’m just a little gay. My city was a shithole when I was elected and I’ve done nothing to change that; I’m really just an empty suit with a plausible line of patter, especially the “I am Spartacus” part. But you should totally vote for me because I’m…what was the phrase? Oh, yeah. “Clean and articulate.”

Hi, I’m Marianne Williamson. If elected, I will redecorate the White House so it has proper feng shui. I am the sanest and least pretentious person on this stage.

Jul 12

The Rectification of Names

The sage Confucius was once asked what he would do if he was a governor. He said he would “rectify the names” to make words correspond to reality. He understood what General Semantics teaches; if your linguistic map is sufficiently confused, you will misunderstand the territory. And be readily outmaneuvered by those who are less confused.

And that brings us to the Jeffrey Epstein scandal. In particular, the widespread tagging of Epstein as a pedophile.

No, Jeffrey Epstein is not a pedophile. This is important. If conservatives keep misidentifying him as one, I fear some unfortunate consequences.

Pedophiles desire pre-pubertal children. This is not Epstein’s kink; he quite obviously likes his girls to be as young as possible but fully nubile. The correct term for this is “ephebophile”, and being clear about the distinction matters. I’ll explain why.

Continue reading

Jun 27

Loadsharers has a logo

Nobody stepped up to design a Loadsharers logo, so I did it myself. Here it is:

Loadsharers logo

Yeah, I’m not much of a graphic artist, but I can do a semi-competent job of whacking together a simple logo when I need to. If you’re an actual pro and think you can fix this or do better, have at it. The XCF SVG I made this from is in the Loadsharers repository at https://gitlab.com/esr/loadsharers

Continue reading

Jun 25

A libertarian rethinks immigration

Instapundit recently linked to an article at the libertarian Reason magazine with a premise I found – considering the authors and the magazine – surprisingly dimwitted. No, a border wall is not necessarily morally equivalent to the Berlin Wall, or anywhere near it. Consider Hadrian’s Wall, or the Great Wall of China. Sometimes there are actual barbarians on the other side of it.

But this does motivate me to try to clarify my own thoughts about libertarianism and immigration. Is there, in fact, any libertarian defense of border and immigration controls?

Continue reading

Jun 22

Segfaults and Twitter monkeys: a tale of pointlessness

For a few years in the 1990s, when PNG was just getting established as a Web image format, I was a developer on the libpng team.

One reason I got involved is that the compression patent on GIFs was a big deal at the time. I had been the maintainer of GIFLIB since 1989; it was on my watch that Marc Andreesen chose that code for use in the first graphics-capable browser in ’94. But I handed that library off to a hacker in Japan who I thought would be less exposed to the vagaries of U.S. IP law. (Years later, after the century had turned and the LZW patents expired, it came back to me.)

Then, sometime within a few years of 1996, I happened to read the PNG standard, and thought the design of the format was very elegant. So I started submitting patches to libpng and ended up writing the support for six of the minor chunk types, as well as implementing the high-level interface to the library that’s now in general use.

As part of my work on PNG, I volunteered to clean up some code that Greg Roelofs had been maintaining and package it for release. This was “gif2png” and it was more or less the project’s official GIF converter.

(Not to be confused, though, with the GIFLIB tools that convert to and from various other graphics formats, which I also maintain. Those had a different origin, and were like libgif itself rather better code.)

Continue reading

Jun 18

While I was making other plans, teil vier

I can walk again.

Wearing a joint-immobilizing boot brace, so I lurch around with a gait even more graceless than my usual palsied semi-stumble, but I can walk. And shower. And make my own breakfast. Hallelujah!

Better news: my prognosis is good. The joint had osteoarthritic damage that may be trouble down the road, but I’ve been osteoathritic in both feet for years now without symptoms. The big good news is that the joint cartilage wasn’t damaged, so I should get full use of the ankle back.

Boot brace for three weeks, physical therapy to strengthen the ankle after that. I won’t be back in kung-fu class for a while. Still, the medical level of this saga is going as well as could be expected.

The financial level, not so much, We got socked with a surgery bill of $2,238 today. Followup and PT…I don’t know what that will cost,but it won’t be cheap.

What’s worse, healthcare.gov chose this perfect time to yank our ACA subsidy because we can’t document the regular income streams. Of course we can’t document them because we don’t have them. Which means we have to pay another $2000 to keep our existing coverage for just the next month, and the bureaucrats have told us to apply for Medicaid. Which we may not be able to get before open enrollment in January.

This means the amount of money I need to pull in without burning savings just went up by $2000 a month. Which is doing a good job of keeping me focused on getting Loadsharers off the ground. If it does well, I’ll do well, and have successfully attacked the larger problem of LBIP funding.

There’s going to be a Linux Journal article, and at least one technology-press interview. I’ve even (gasp!) tweeted about this, something that happens approximately once every other blue moon.

I have a list of 11 people who have taken the pledge. I think we need around 11,000 (mostly supporting LBIPs other than me) to make a real dent in the problem. So please, go out and prosyletize to your tech-industry friends, and ask them to spread the word. We need this to go viral.

Jun 16

Sharing the load effectively

At the end of my last post I said I was wandering off to think about scalable, low-overhead recommendation systems.

It’s funny how preconceptions work. I know, I think better than most people, how often decentralizing systems to avoid single points of failure is good engineering. Yet I had to really struggle with myself to jettison the habits of thought that said “If you want to use money to help people, you’re going to have to build a centralized, heavyweight structure around the management of that task.”

But struggle I did. Because I’d already tried that, and failed.

I also had to get past the idea that identifying good funding targets can be crowdsourced. Nope. Identifying candidates and digging up information on them can be, but actually evaluating merit and centrality will take knowledge most contributors not only lack but have no strong reason to try to acquire.

Once I got my head clear, this is what came out:


The basic trick here is piggybacking not just on the payment transfer capacity of remittance systems but on their patron/client communications channels as well. That way Loadsharers doesn’t need to manage anything itself other a handful of adviser web pages and a bunch of trust relationships.

Also notice the implications of how I designed the Adviser role. By the time we have a half-dozen or so advisers I won’t be key man anymore. That’s intentional.

I also like the fact that there will, in effect, be a (mildly) competitive market in adviser skill, with loadsharer contributors tending to gravitate to advisers who exhibit activity and diligence. That’s intentional too.

Jun 15

Load-Bearing Internet People

I just finished giving a talk – by remote video – at South East Linux Fest, about the Load-Bearing Internet Person problem.

An LBIP is a person who maintains the software for a critical Internet service or library, and has to do it without organizational support or a budget backing him up.

That second part is key. Some maintainers for critical software operate from a niche at a university or a government agency that supports their effort. There might be a few who are independently wealthy. Those people aren’t LBIPs, because the kind of load I’m talking about isn’t technical challenge. It’s the stress of knowing that you are it and you are alone, the world out there has no idea what a crapstorm it would be if you failed at your self-imposed duty, and goddammit why doesn’t anybody care?

LBIPs happen because some of the most critical services can’t be monetized. How do you put a meter on DNS? Or time synchronization? Or having a set of ubiquitous and reliable crypto libraries? Where there’s no profit stream, markets are not going to directly solve this problem.

I know at least two LBIPs whose health has broken under that strain – Dave Taht and Harlan Stenn. Me, I’m still generally healthy, but my recent medical issues have re-focused my mind on the LBIP problem.

I spent seven years trying to solve this problem by founding an organization to collect funds from sponsors and distribute them to LBIPs. That was the Internet Civil Engineering Institute. It shut down late last month because, as it turns out, recruiting people who are both willing and entirely competent to run an organization like that is really difficult. I failed at it.

(I’ve designed and founded two nonprofits that survived my departure and are still on mission, one 17 years on and the other 26 years on. I’m actually good at that game, but ICEI failed anyway. Possibly someone smarter or more streetwise than me could have made ICEI work, but given my previous track record of success I don’t think that would be a smart bet.)

What I said at SELF was this: centralized attacks on the LBIP problem have failed, so we need a decentralized, distributed one. Services like Patreon, recurring PayPal remittences, and SubscribeStar give us the technology to do that. What we need to add is consciousness about the problem and some social engineering.

Here’s the challenge I put to the audience there: If you have a good paying job, earmark $30 a month – the equivalent of a moderately-priced restaurant meal. Identify three LBIPs. Remit them $10 a month.

Then go to every gainfully employed programmer you know and explain to them why they should do the same thing, and also further spread the word.

The fanout is important. One of the failure modes we want to avoid is for all that support to go to a handful of highly visible hackers like, er, me. There are lots of LBIPs working in obscurity; we need to solve this problem at scale, not just for a few prominent figures.

The SELF audience liked this idea – and then somebody raised the question I should have expected: “How can we know who to fund?”

Sorely tempted as I was to say “There’s always me…”, I didn’t. That would have been a humorous answer of the funny-because-it’s-true kind, but the discovery problem is a serious one. Several other questioners chewed on various possibilities. I ended up saying I would try to jump-start a discovery process on my blog by collecting a list of LBIPs.

That’s not going to be a solution that scales well, though. We’ll have to feel our way to a better one; I have some ideas which I’ll develop in future posts.

I do have a name for the effort – thought it up a few minutes ago. Loadsharers. We need to work out how to be effective loadsharers.

For now, my comments are open. Please check in if you (a) want to take the loadsharer pledge – $30 in 2019 dollars to one, two, or three LBIPs every month (ideally three), or (b) have an LBIP to recommend.

I will curate a list of LBIPs I think are worthy. I should not be the only person doing this. Eventually we’ll set up a recommender system and a way for LBIPs to declare funding goals. Mumble web of trust? Something like that should be doable.

Please do not wander off into trying to design a better mediation/discovery system in this comment thread (yeah, I know my audience). Save that for my post on that topic, coming soon.

As final and obvious point: yes, I think I’m a worthy LBIP, go ahead and do that $10 thing at me, initially. (Note to self: create a “Loadsharers” tier.) But I have a relatively low monthly figure that I consider “enough”; above that, I’d really rather the money went to other people.

So don’t be surprised if, a few weeks down the road, you get a patron notice from me saying “Enough! Roll a D6 and if it comes up 5 or 6, drop me and go fund someone else.”

/me wanders off to think about scalable, low-overhead recommendation systems…

Jun 15

In a blatant attempt to attract more Institutional supporters…

Anybody who has visited my Patreon page should know that I have two special support tiers.

At Bronze ($20 per month) level, you get included in the credits of the project pages for all my solo stuff. Here’s a recent example.

Today I’m announcing two new perks for Institutional ($100 permonth) supporters. This tier is intended for people with corporate budgets behind them.

When you sign up, you get to chose a name (possibly your corporation’s) and at your option a URL to back the name; this will be included in the credits pages. You will also get an individual shout-out in the “Acknowledgements” section of my forthcoming book “The Programmer’s Way: A Guide to Right Mindset”

By joining my feed at Institutional level, your company can demonstrate good Internet citizenship through supporting the often thankless and obscure work needed to keep the infrastructure humming.

Thanks in advance for your support.