Happy Birthday HTTPD

I gather that the Apache HTTPD server project was born in March of 1995, i.e. 20 years old today.  Noting that April 15th when ones taxes are due in the US it 66

My first contribution was 1997, and I was deeply involved in that, and then other questions of open source, standards, etc. etc. for about a decade.

Very interesting years, yup.

I’m surprised that my second posting to the dev list mentions typing injuries.  I thought that happened after I got involved, but apparently it was before.  That change the arc of my life a lot more than HTTPD.

As one of my Internet friends has been known to point out nostalgia is a very dangerous emotion, so I’ll stop there.


Things I’m Liking

  • 200 years ago Tambora blew up –> world wide climate emergency.  You can worry about that too.
  • Forcing the unemployed to take jobs as fast as possible has long term negative consequences on GDP because they suck at the jobs they end up taking?
  • Interestingly cheerful take on how capitalism’s long term and intimate relationship with criminals is really a wonderful thing.  Extra points to Bloomberg for having Mr. Cook pen that.
  • Tis ironic that a good place to read up on modern trolling technology is the US propaganda organization Radio Free Europe’s series on the Russian Troll Army.  A serious sociologist should write a book on these techniques – he’s get a lot of buzz and high paid consulting work!

Crime Registry

I’ve occasionally wondered if the sex offender registry might lead to some sort of flocking behavior where those on the registry tend to gather in particular locations.  I’ve even looked for, but not found the heat map showing where they flock too.  Yeah Google, I thought you were all seeing?

Similarly I’ve wondered if we will seem other scarlet letter offender registries?

So it is with much delight that I learn that Utah is close to creating a registry for white collar criminals.  Apparently Utah has a lot of affinity fraud.

Gosh if they set one of these up in New York state I can visualize the what the heat map of Manhattan would look like.

High-Involvement Style

I’m currently enjoying Deborah Tannen’s book on Conversational Style.  Here is her summary of that might be called New Yorker style.  Sometime’s it’s called fast talking,   People unpracticed in this style often find in exausting or obnoxious.   She calls it “HIgh-Involvement Style.”

1. Topic

  • (a) prefer personal topics,
  • (b) shift topics abruptly,
  • (c) introduce topics without hesitance,
  • (d) persistence (if a new topic is not picked up by others, reintroduce it. Data show persistence up to a maximum of seven tries).

2. Genre

  • (a) tell more stories,
  • (b) tell stories in rounds, in which (i) internal evaluation (Labov, 1972) is preferred over external (i.e., demonstrate the point of the story rather than lexicaling it), (ii) omit abstract (Labov, 1972) (i.e. plunge right in without introduction; cohesion is established by juxtaposition and theme);
  • (c) preferred point of a story is the emotional experience of the teller.

3. Pace

  • (a) faster rate of speech
  • (b) pauses avoided (silence has a negative value; it is taken as evidence of lack of rapport-Tannen, 1984);
  • (c) faster rate of turn taking,
  • (d) cooperative overlap (the notion of back-channel responses [Duncan 1974] is extended to include lengthy questions and echoes, resulting from a process of participatory listenership).

4. Expressive paralinguistics

  • (a) expressive phonology,
  • (b) pitch and amplitude shifts,
  • (c) marked voice quality,
  • (d) strategic pauses

The ancient global eunuch fad!

a_few_menSo here’s a chart  from an illustration by Sabine Deviche, it’s taken from here.   It covers deep time, the axis on the left is in units of a thousand years.    The interesting bit is the 2nd chart in the middle.   It shows “effective” men (green) and women (purple); where by effective we mean that they managed to pass their genes onto the next generation.

Something happen to the men.

At some point the number of men who managed to pass their genes along declined to a vanishingly small percentage of the total population.

But this didn’t happen to the women.

Most of the men disappeared, at least they didn’t show up at the prom.

“4-8,000 years ago there was an extreme reduction in the number of males who reproduced, but no in the number of females.”

What the hell?

You can see the whole illustration here, and read more here.  The paper is inside a walled garden.  Or maybe you’ll enjoy this headline:

“8,000 Years Ago, 17 Women Reproduced for Every One Man.”

europeThis blog post offers this view, showing the event for various regions.  The women, in rose, always reproduce more dependably. But 15 thousand years ago their effectiveness increases substantially.  And then around six thousand years ago we have this event that reduced the reproductive success for men.

When it happened, how radical it was, and how long it lasted varies from region to region. it’s hard to see how to explain this without blaming social forces: culture, technology, economics.  Fun to make up insta-theories.

Premature Standardization

Back in the day I was quite interested in Industrial Standardization.  It’s a fascinating complement to the more widely discussed business models intended to capture and own a given market.

This morning I’m aroused by word that the ISO is working on standardizing how we test software.  My reaction is “Argh!  Surely you jest!”

A few more reactions.

In all my reading about standards I don’t recall a good check list to help guide when to transition a body of practice into a standard.  There is an excellent list of what drives standardization.  But that’s more about the intensity of the demand, not the quality of the supply of professional knowledge.

There are a few good discussions of failure syndromes around standardization.  James Gosling wrote up a nice short one about how often the demand for quality runs ahead of the supply of skills, which I mention here.

There is an excellent model of what goes wrong when you have intense demand for skills, low professional knowledge, and low barriers to entry.   I’ll quote from my post about that:

“The lack of clear quality measures leads the substitution of alternate sources of legitmacy: pomp, pompous attitude, parasitizing on other sources of authority, advertising, character defamation. (A point which deserves a blog posting of it’s own, but since that’s unlikely I’ll toss in this marvelous line. When this happens you see a pattern: consumers hold the trade in very low esteem but hold their personal practitioner in the highest regard. Where have I heard that before?)”

The effort to standardize software testing came to my attention via Laurent Bossavit’s twitter stream.   Laurent has spent a lot of calories on the puzzle of good software development practices.  You should read his book “The Leprechauns of Software Engineering: How folklore turns into fact and what to do about it.

And maybe you should sign the petition that attempts to slowdown this attempt to prematurely standardize software testing.   Just because we want to have high quality testing practices, skills, and standards does not mean we are ready to write down standards for how to fulfill that desire.  We aren’t ready.


I’m a bit of crank about the right answer to the question: “What has improved the quality of life the most for humans?”  Since pretty clearly the answer is Public Health.

Here’s a nice example of one of the many stories of that kind:  A Striking Change in Lightning Deaths.

I wonder if there is an estimate of how many lives the slogan: “”when thunder roars, go indoors” saved?

Listeners on Private Ports – race condition edition

Ha!  I have here a service X that is listens for it’s clients on private port N.  It failed to start because another activity Z was using N.  Looking at the state of things it’s clear that Z got N randomly assigned when it established a connection to a service on another machine.

This is the kind of bug you discover only if you get a short debug loop around what is typically a rare activity – rebooting the server in this case.  Gosh the chances of this happening are small.

I have been parking my private listeners in the private port range (49152 to 65535) for almost 40 years.  Maybe, I need to stop doing that.  Or at least assure that all listeners get started before any other activities start using the net – yeah right.

But now I’m confused.  I see that there is a concept of “ephemeral ports,” but the Wikipedia article leaves one with the impression that in practice you don’t know what range they are being drawn from.

So now I’m a bit confused what best practice might be.  Advocates of resource discovery score a few more points?

Frequency-hopping a server’s port

Here’s one of those ideas you have when you are not sleeping: why don’t we use frequency hopping to make it hard for attackers to find listeners to attack?

In scenarios where you want to keep the port number a secret,  you could randomly vary it’s location.  You could use TOPT, so both sides can rendezvous.  Seems this wouldn’t be that hard to add to ssh.  The sshd_config file might look something like this:

# Enable dynamic port listening, and the TOPT secret
Port dynamic 6000 16000
PortSecret 12345678901234567890

And the user’s ~/.ssh/config file would then have something like this in it

Host crazy.example.com
   Port dynamic
   PortSecret 12345678901234567890

You could let the PortSecret default to something derived from host key.

A Good Day

A few misc. items…

Happiness & Economics … What a wonderfully weird chart this is.  It’s weird in two ways.  First off what the heck is going on in the US?  Secondly this is basically the inverse of the chart of happiness v.s. income.

Programming languages – There is a very nice dialect of Lisp build on top of the Python ecology.   Sort of analogous to the way clozure is built on top of the Java ecology.  It’s called hy. Very smooth interoperability with Python, across many Python implementations.  For example you can casually load libraries written in hy into python code and visa versa.  Macros, backquote, real lambdas, everything is value returning, etc.  Surprisingly it even works pretty well with the Python debugger, such as it is.

Pricing games – As an collector of amusing pricing games this article that attempts to puzzle out the details of MTA ticket pricing is fun.

Programming – I wish I could find a standard tool that would let me make a compressed archive and then insert a descriptive header of unpredictable size at the front of it.  Something suitable for when you are building an archive by streaming and after the fact you want to prepend the cataloging metadata.  I guess I’m just a bit surprised that this use case isn’t so common that we don’t have a widely used tool that supports it.

Current events – NYPD?  What a bunch of babies!

Tourist Info:  The Brooklyn Art Museum is amazing.