Sunday, December 29, 2024

What changed?

This is one of those posts that started as one thing, trying to make some sort of Larger Point, but ended up as ... something. It started out on the long-running theme of not-so-disruptive technology, then devolved into a technical exploration as I tried to back that point up, and then went a somewhat different direction because of what I actually found when I went researching, before sorta circling back to the general vicinity of the of the original theme and pulling together some threads from some of the first posts on this blog from, oh, a minute or two ago. Rather than try to polish all this up into some sort of coherent essay, I've decided to leave it pretty much as written. Perhaps as some sort of compensation, I've included a lot more links than I usually do.


Looking back I see that in 2024, I've already doubled my output from 2023 (by a score of two posts to one), so maybe I should quit while I'm ahead. But I had an idea for a post, and after re-reading back to July of 2020 (that is, seven posts), I'm pretty sure I haven't explored this particular point before, at least not recently. Or rather, I have, given that the not-so-disruptive technology tag is in second place behind annoyances, but if I've stepped back and surveyed it from a broader point of view, it hasn't been in the last four years.

(I also notice that the link to Intermittent Conjecture is for a four-year-old post, probably because that particular feature is no longer particularly supported, because of course it's not. Grandpa, what's a "blogroll"?)

I considered editing that last bit of snark out, especially since annoyances is already well represented, but I think that it's probably in line with the rest of this post, though maybe in a roundabout way.


It's almost an axiom that newly-developed technology will Change the World. I say "almost" because technically an axiom is a statement that you assume to be true because it's essential to the rest of your logical framework, but you don't have any other way to prove it to be true, so you have to just assume it. I'm thinking of mathematical axioms like "a thing is equal to itself" or, more esoterically, "if you have a collection of sets, you can form a new set by choosing one element from each" (it took quite a bit of work to figure out that you can't prove that from other axioms like "two sets are equal if you can match up their elements one-to-one in both directions").

"New technology changes everything" is a statement that people often assume to be true, and it's essential to at least some people's logical frameworks, but I wouldn't call it an axiom because you can actually look at any given new technology and, I claim, come to a reasonable conclusion as to whether it changed everything. And then, maybe, as a followup question, by how much?


To take a couple of easy, well-known examples, it's not hard to argue that, say agriculture changed everything, or antibiotics changed everything. Except ... depending on what you call "agriculture", you could argue that agriculture was around for thousands of years before cities like Shuruppak or Dholavira arose. On a smaller timescale, the first modern antibiotic was extracted from mold growing on a bacterial culture in 1928, but it wasn't available in useful quantities until the early1940s.

It's not the discovery of a technology that makes the difference. There wasn't even any one event that you could call "the discovery of agriculture." There was an event that could be called "the discovery of (modern) antibiotics (that were known to work by killing microbes)", but that in itself didn't change anybody's life greatly.

The point here that simple statements like "agriculture/antibiotics changed everything" turn a bit mushy after even a little prodding. More accurate versions might be "over the millennia, developments in agriculture have had a significant impact on human population and living patterns" or "the development, mass manufacture and widespread deployment of several types of antibiotics in the latter half of the 1900s had a significant impact on human health outcomes."

Clearly there have been significant changes in how people live, and clearly developments in agriculture and medicine, including the development of antibiotics, have played a significant role in that, but it's not a simple matter of "agriculture happened" or "antibiotics happened" followed by "everything changed". The actual stories are full of false starts, backtracks, accidental discoveries, social upheavals, twists of fate and all sorts of other seemingly extraneous factors. Which is the interesting part.


What got me started on all this was thinking about how the web has changed communication, and in particular telecommunication. Except, as soon as I wrote that, I realized that it's more a matter of the internet changing communication, since I've already argued that it's the web of links that makes the web webby, and I'll just claim here that this webbiness hasn't had a large impact on how we communicate with each other.

We could just as well have Skype and Zoom without the web. For that matter, to a large extent each social media platform is its own web, and not "the" web. But that way lies yet another round of fretting over what exactly am I blogging about here ... For now, let's file communication technology under "the web at large" or something and get on with it.


For most of human existence, the only way to communicate detailed information over a long distance was by people moving around. Travelers would bring stories and knowledge and trade items with them and information would diffuse across large areas, but if that traveler wanted to send a specific message to someone they'd met years ago while traveling someplace far from their current location, well, good luck with that. It may not have been impossible, but it couldn't have been commonplace.

Several thousand years ago, digital communication came along and changed this. With writing came the option of moving a written message with the sender's exact words (there wasn't any single "invention of writing", either, but let's just roll with it). Messages could be sealed so that their contents couldn't be easily changed, signed so that you could tell who they came from, and even encrypted so that only the intended reader could read them, or at least that was the idea.

Digital telegraph systems, also dating back thousands of years, could transmit text from point A to point B without even needing a person having to carry it. The Greek phryctoria, a system of towers on mountaintops with torches, are a good example but not the only one.

Two key measures of telecommunication are bandwidth, which is how many bits can be transmitted in a given amount of time, and latency, which is how long it takes to transmit any particular bit from sender to receiver. As usual, the actual definitions are more subtle, particularly for bandwidth, but these will do here. If you're feeling technical, feel free to read bandwidth as bitrate.

For example, if it takes three seconds to switch the torches in a telegraph tower around to show a new letter, and there are 24 possible letters, then the bandwidth is about 4.6/3 bits per second, or about 1.5bps. The latency from one tower to the next, around 30km away, is negligible (about 0.1 milliseconds).

If the message is supposed to be relayed to the next tower in a series of towers, it will take some amount of time for someone to read the arrangement of torches in the sending tower and put the same torches up so the next tower can see them.  Let's say there are two people in the tower, one reading and one putting up torches, and it takes an extra second for the reader to read and announce the next letter, on top of three seconds to arrange the torches. Latency is then four seconds per tower.  That is, if the first tower is sending a message and the second is relaying it to the third, the third tower is getting the message four seconds after it is sent. A fourth tower would be eight seconds behind, and so forth.

Suppose I want to send a message to someone ten towers away. Latency is still pretty good, relatively speaking. The last tower will be 36 seconds behind the sender (nine relays for ten towers). If that receiver sends a reply, I can get it just over a minute after sending my message (in more technical terms, round-trip latency is on the order of a minute). While this is glacial by today's standards, it's outstanding in comparison to a multi-day journey to get from where I am to where the receiver is, and I don't have to worry about someone waylaying my messenger along the way (or my messenger deciding they have better things to do with their time).

Bandwidth, though, is not so great. If I'm sending a short message like "Prepare for attack from the north," that's not a problem. Transmitting that message will take a couple of minutes and my receiver will have the whole thing half a minute after I finish sending it. But suppose I'm sending a trade agreement proposal that amounts to 12,000 bits -- still tiny by today's standards. That will take a couple of hours, which is still doable, though not a lot of fun for anyone involved.

But the people on the other end will want to respond with their own counterproposals, and so on. Pretty soon we're into days, and spare a thought for the twenty people up in the towers shuffling torches around and looking out for torches at other towers through the night  (I'm going to go out on a limb and say this system works better at night).

Probably better to send a trusted emissary with the text of my proposal and maybe some other written instructions. And while they're at it, they could carry messages from other people in my area to people in the receiver's area, or anywhere along the way, and we have ourselves the beginnings of a postal system.  The latency of a postal system is measured in days, but the bandwidth is essentially limited only by how fast people can actually write and read and how many people are sending and receiving messages -- you can fit a lot of sheets of paper onto a horsecart. Not to mention that you can also send drawings and diagrams easily on a sheet of paper.

This may seem like a lot of speculative detail about ancient systems of communication, and it probably is, but it covers the bulk of human history (the written-down part, as opposed to prehistory, which is most of human existence). From ancient times until the late 1800s, long-distance communication was mainly a matter of moving physical texts around, with limited use of alternatives that were much faster (in latency) but also much, much slower (in bandwidth), and quite a bit more expensive. This includes the era of the modern optical telegraph (late 1700s) and electrical telegraph (mid 1800s).

What happens next is interesting. I originally wrote "then came along the telephone," with the idea that it was a major leap to have the bandwidth to carry voice instead of the dots and dashes of morse code. Fortunately, I did a little double-checking and discovered that

  • The bandwidth of a telegraph was not that low. A punched-tape system around the time of the telephone's invention could transmit upwards of 400 words per minute. At roughly 12 bits per word, that comes out to about 80 bits per second. That's nothing by modern standards, but it's about 50 times my guess for the phryctoria. Some of that is because Morse code encodes text more efficiently than torches, but most of it is due to the switch to electromagnetic transmission (um, light from torches is also electromagnetic ...).
  • The bandwidth of human speech is not that high. In this old post I cited a world record of 10 words per second, or about 120 bits per second, but normal speech is much slower.
In other words, a telephone and a high-speed telegraph are transmitting words at about the same rate, though the telephone has the advantage of carrying tone of voice and not requiring someone to transcribe words onto a paper tape. I suppose this shouldn't be too surprising since both the telephone and telegraph are using the same underlying transmission medium of electromagnetic waves traveling along copper wires or, a little later, over the air.

The same technology could also transmit images. The first facsimile machine (perhaps you've heard of "faxes"?) was developed around the same time as the telephone. Later, in the 1920s, a number of inventors on a number of continents (including Leon Theremin, better known for the musical instrument) developed various systems for transmitting moving images. Early television station WRGB ("RGB" can't be a coincidence, can it?) transmitted 40-line images at 20 frames per second. Let's guess that a 40-line image equates to 1600 8-bit pixels. That comes out to about 260 thousand bits per second (260kbps).

This is already a remarkable increase in bandwidth*, from a hundred or so bits per second in the mid 1800s to hundreds of thousands in the early 1900s. By the dawn of the internet, let's say 1974 -- fifty years ago -- when the proposal for TCP was published, a leased telephone line could carry around 50kbps (56kbps as I recall and Wikipedia seems to confirm). That was the basic unit -- it was entirely possible, and typical, to lease more than one. By the mid 1980s, NFSNET was using 1.5Mbps T1 lines. Later came T3 lines at 45Mbs (so a T3 is worth 30 T1, go figure), and today we're talking gigabits or more. 

This is all a matter of how bandwidth is sold. The actual transmission cables are much heftier. Fiber optic cables can carry petabits per second (Pbs). A peta is a million gigas, that is, a petabit per second is a quadrillion bits per second, or about 125 thousand bits per second for every person on the planet. Commercially available cables are somewhat smaller, but not much, measured in hundreds of terabits, that is, hundreds of trillions of bits per second.


There are still some specialized applications that can give that much bandwidth a workout, but in human terms the amount of bandwidth available is absolutely ridiculous ("available to whom?" is a fair question). Which brings me back to one of the earliest themes on this blog: limits on human bandwidth. That is, how much information can any individual person deal with? I discussed several aspects of this in this post about, oh, seventeen years ago.

In terms of bits per second, our highest use of bandwidth is probably the visual system,.which processes somewhere around a gigabit per second considered as raw pixels, but there's a lot of redundancy in there. A good MP4-compressed video stream, which includes audio, is more like 10Mbps. Since a format like MP4 is tuned to provide only the information we actually process, it's probably a better measure of how much data the visual system is actually processing.

There's a lot we don't know about our other sensory input -- touch, smell, proprioception and whatever else, but it's clearly operating at a much lower bandwidth (for example, a walking robot does not need a fiber optic cable to tell the CPU how far its knee is bent or how much pressure its foot is exerting).

In other words, there are many, many ordinary houses with much more than enough bandwidth to saturate the sensory input of all the humans in them, if said sensory inputs could all be magically connected to a stream of bits. In practice, it means that there's enough bandwidth for everyone in the place to spend all their time watching video.

But -- and maybe this really is leading to some sort of point about technology changing everything -- that's been true for quite a while, at least since the advent of 24-hour cable TV, which is to say, also about 50 years ago, which I've just called the dawn of the internet. I don't think this is at all a coincidence. Let's try to boil all the stuff about bandwidth down to a few bullet points:
  • For most of human existence, long-distance, low-latency bandwidth was zero -- there was no way to get a specific message across a long distance quickly. You could interact with some directly at short distance with high bandwidth and low latency, but that was about it.
  • For most of human history, long-distance, low-latency bandwidth has been very low. In some times and places it was possible to quickly transmit a short message over a long distance, but even then, latency was measured in minutes and bandwidth in single-digit bits per second.
  • Starting in the 1800s, electromagnetic transmission led to huge increases in low-latency, long-distance bandwidth, from single-digit bits per second to current rates, which are enough to enable video calls between any two internet-connected points.
  • In the mid to late 1900s, bandwidth was high enough and cheap enough to enable two innovations:
    • Cable TV carrying over a hundred channels 24/7
    • Wide-area digital networking
Of the two, digital networking was by far the slower. Early networks mainly transmitted text, whether in human or computer languages. If you had a terminal at home, you could typically connect to your local network at speeds of 110 to 2400 baud (in general a different unit from bits per second, but in this case the same), and hope that you'd remembered to turn off call waiting on your landline. Then, after a long day of hacking, you could flip on the TV and watch at something like a megabit (resolution was lower in those days).

Even backbone connections were very slow by today's standards. This doesn't seem like a technical limitation, since ordinary coax cable could handle megabits, but more a matter of there not being that much digital information to send. If I wanted to talk to a colleague on the other side of the country, I wouldn't have tried to set up a call over the internet at the time. I would just pick up the phone.

The digital convergence that happened gradually over the next couple of decades consisted largely of building up the internet backbone, which was based on telephone and cable technology (mostly telephone, I believe), to the point where it could carry digital information at a rate comparable to the analog technologies that had been around since the beginning of the whole exercise.

Technically, this was revolutionary. For most intents and purposes, anything that was analog in the mid 1900s, particularly television, telephone and radio, is now carried digitally on the same network infrastructure that you can use to send purely digital information like ... text and emails? Source code?

This is a kind of interesting way to look at it. Hiding inside the massive digital network that delivers sound and video to us is a tiny replica of the original internet, albeit expanded from a few thousand researchers to a significant slice of the world's population. Billions are bigger than thousands, of course, a million times bigger, in fact, but overall digital bandwidth has increased by much more than a factor of a million.

(The early internet wasn't just used for email and source or object code. It was also used to transmit scientific data. Some datasets can be quite large, particularly in astronomy and particle physics, large enough to saturate even the modern backbone. But in such cases data is generally transmitted by putting it on physical media, which is then shipped. The postal service still wins on bandwidth. And yes, I am proudly using both data and media as mass nouns here.)


I think what I'm trying to sort out here is that the digital convergence can be looked at two ways. The original vision was to bring the intelligence of the internet to existing audio and video media. A TV cable brings a fixed set of channels into your house and very little back out. An analog phone circuit delivers voice traffic from point A to point B. A digital network can carry information from any number of senders to any number of receivers and do any kind of processing along the way.

On the other hand, technically, the digital convergence was a shift from sending analog data over analog lines (or over the air) to sending the same data over the same lines, or at least the same types of lines plus the cell network (also fundamentally analog), but encoded digitally, then re-encoded into analog signals and likewise decoded and re-decoded on the other end.

Why do that?

The wilder speculations of the 1990s haven't really panned out. A phone call is still a phone call. True, most of the time it's easier just to text, but texting needs much less bandwidth than calling. It certainly does not require a huge buildout of digital bandwidth. All the texts you send in a year would probably amount to a few seconds of audio.

TV shows are still TV shows and movies are still movies. Exciting new possibilities like interactive choose-your-own-adventure TV are an occasional novelty. Live streams allow viewers to interact with the presenter/performer, but so did call-in TV shows.

The difference is control. Outside the occasional news program or sporting event, I'm not sure I can remember the last time I watched something at the same time it was broadcast, if it was ever broadcast at all. I haven't bought an album in years, even in digital form. I stream what I want to watch or listen to, and I'm hardly a bleeding-edge early adopter. If I want to participate in a livestream, I can choose that. More importantly, if a creator wants to put on a live stream, they can easily do that. If I want to set up a video call with some people at work (or not at work), that's easy, too.

Some of these might be possible with the old technology. I could imagine a high-bandwidth phone service that would allow you to call a special number to connect to a video server and pick out what to watch on your video-enabled phone terminal, but putting everything on a digital network that handles data as bits regardless of its content or where it's going has made all of this much easier.

This is all sliced finely enough that individual people can decide which individual people to communicate with, from friend group to celebrity influencers to major organizations and whatever else. I'm personally not sure how much the behavior that this has enabled is new and how much is stuff that people were doing anyway. I explored that theme fairly early on, here, here and here for example, but I don't really do much with social media, even if you count blogging and the occasional visit to LinkedIn.


I think "Digital communication has changed everything" is true in about the same way as "Agriculture has changed everything". On the one hand, it has to be true. Being able to communicate instantly with any of billions of people has to be different from only being able to communicate instantly with the people around you. Being able to transmit high-resolution video across the world with negligible delay has to be different from being able to send a letter across a continent in days or weeks.

Being able to stream from a wide collection of audio and video is certainly different from having to buy or borrow books, records/CDs and videotapes/DVDs, and since that shift has happened well within living memory, it can certainly seem like things are changing rapidly.

But on the other hand, digital technology, including digital telecommunication, has been around for thousands of years. Analog telecommunication has been around for about a century and a half. What we might call the digital revolution is a change in how we transmit and access information, primarily audio and video, that had previously been analog, sitting on top of a huge increase in overall telecommunication bandwidth that began happening over a hundred years ago.

Just as there is no particular beginning of agriculture, there is no particular beginning of digital communication. Even if you could pinpoint the first time a person deliberately planted a seed with the intention of harvesting food later, or the first time a person deliberately made marks to represent words with the intention of someone else reading them later, it wouldn't tell you much. What matters isn't the particular starting point, but the long history of development and use over the millennia.


So far, advances in communication have been about people communicating with people. Machines do communicate with other machines without direct human involvement, but this is mainly in service of people communicating with people. This may change, but that's for another blog.

As far as people communicating with people, the limiting factor is mainly the people themselves. There are only so many conversations one can have and so many people to have them with. The whole point of a video conversation is to make the call as much like talking face to face as possible, that is, to accommodate our limitations in how we communicate. There are now ways of broadcasting a message from one person to millions of people, or even a billion, but even if one person can broadcast a message to a billion people instantly, those billion people will make sense of it in terms of their own lives, their own views and their own desires. 

The how of communicating with other people has changed greatly over the millennia, and particularly greatly in recent decades. This in turn has significantly affected whom we can communicate with. But what we talk about, even if we're talking about how quickly things appear to be changing, doesn't really seem to have changed much at all.


One of the earliest themes of this blog was trying to understand what effect the web and the internet would have on how we talk to each other. My instinct has been generally been to push back against "It's all different now" narratives, and I think my instinct has largely been borne out (but then, I would think that, wouldn't I?).

And yet, I can't believe that nothing has changed. A lot has changed. Some part of me wishes that, after nearly two decades, I could arrive at some sort of grand summing-up of What The Web Is About and what effect it's had, but after all this time, I'm not sure I have much beyond my original take: "It's not nothing, but I'm not sure what it is, except whatever it is doesn't line up that well with the hype."

Monday, February 5, 2024

Do what I say, not what I mean

While watching a miniseries on ancient history, I got to wondering how quickly people could move around in those days.  The scriptwriters mostly glossed over this, except when it was important to the overall picture, which seems fine, but it still seemed odd to see someone back in their capital city discussing a battle they'd taken part in a thousand kilometers away as though it had happened yesterday.

So I did a search for "How far can a horse travel in a day?".  The answer was on the order of 40 kilometers for most horses, and closer to 150 for specially-bred endurance horses.  That would make it about a week to cover 1000km, assuming conditions were good, except that a horse, even a specially-bred one, needs to rest.

What if you could set up a relay and change horses, say, every hour?  At this point we're well off into speculation, and it's probably best to go to historical sources and see how long it actually took, or just keep in mind that it probably took a small number of weeks to cross that kind of distance and leave it at that.  But speculation is fun, so I searched for "How far can a horse travel in an hour?"

It may not surprise you that I didn't get the answer I was looking for, at least not without digging, but I did get answers to a different question: What is the top speed of a horse in km/hr? (full disclosure, I actually got an answer in miles per hour, because US, but I try to write for a broader audience here).  How fast a person or animal can sprint is not the same as how far can the same person or animal go in an hour.

This seems to be the pattern now that we have LLMs involved in web search.  I don't know what the actual algorithms are (and couldn't tell you if I did), but it seems very much like:

  • Look at the query and create a model of what the user really wants, based on a Large Language Model (LLM)
  • Do text-based searches based on that model
  • Aggregate the results according to the model
It's not hard to see how an approach like this would (in some sense) infer that I'm asking "How many kilometers per hour can a horse run?", which is very similar in form to the original question, even though it's not the same question at all.  There are probably lots of examples in the training data of asking how fast something can go in some unit per hour and not very many of asking how far something can go in an hour.  My guess is that this goes on at both ends: the search is influenced by an LLM-driven estimate of what you're likely to be asking, and the results are prioritized by the same model's estimate of what kind of answers you want.

It's reasonable that questions like "How fast can a horse go?" or even "How fast is a horse?" would be treated the same as "How many km/hr can a horse run?".  That's good to the extent that it makes the system more flexible and easier to communicate with in natural language.  The problem is that the model doesn't seem good enough to realize that "How far can a horse travel in an hour?" is a distinct question and not just another way to phrase the more common question of a horse's top speed at a sprint.

I wish I could say that this was a one-off occurrence, but it doesn't seem to be.  Search-with-LLM's estimate of what you're asking for is driven by the LLM, which doesn't really understand anything, because it's an LLM.  It's just going off of what-tends-to-be-associated-with-what.  LLMs are great at recognizing overall patterns, but not so good at fine distinctions.  On the question side, "How far in an hour?" associates well with "How fast?" and on the answer side, "in an hour" associates strongly with "per hour," and there you go.

That's great if you're looking for a likely answer to a likely question, but it's actively in the way if you're asking a much-less-likely question that happens to closely resemble a likely question, which is something I seem to be doing a lot of lately.  This doesn't just apply to one company's particular search engine.  I've seen the same failure to catch subtle but important distinctions with AI-enhanced interfaces across the board.

Before all this happened, I had pretty good luck fine-tuning queries to pick up the distinctions I was trying to make.  This doesn't seem to work as well in a world where the AI will notice that your new carefully-reworded query looks a lot like your previous not-so-carefully-worded query, or maybe more accurately, it maps to something in the same neighborhood as whatever the original query mapped to, despite your careful changes.

Again, I'm probably wrong on the details of how things actually work, but there's no mystery about what the underlying technology is: a machine learning (ML) model based on networks with backpropagation [well, transformers specifically don't use backpropagation, but it's probably in there somewhere --D.H. 25 Sep 2024].  This variety of ML is good at finding patterns and similarities, in a particular mathematical sense, which is why there are plenty of specialized models finding useful results in areas like chemistry, medicine and astronomy by picking out patterns that humans miss.

But these MLs aren't even trying to form an explicit model of what any of it means, and the results I'm seeing from dealing with LLM-enhanced systems are consistent with that.  There's a deeper philosophical question of to what extent "understanding" is purely formal, that is, can be obtained by looking only at how formal objects like segments of text relate to each other, but for my money the empirical answer is "not to any significant extent, at least not with this kind of processing".


Back in the olden days, "Do What I Mean", DWIM for short, was shorthand for any ability for a system to catch minor errors like spelling mistakes and infer what you were actually trying to do.  For example, the UNIX/GNU/Linux family of command-line tools includes a command ls (list files) and a command less (show text a page at a time, with a couple of other conveniences).  If you type les, you'll get an error, because that's not a command, and nothing will ask you, or try to figure out from context, if you meant ls or less.

A DWIM capability would help you figure that out.  In practice, this generally ended up as error messages with a "Did you mean ...?" based on what valid possibilities were close in spelling to what you typed.  These are still around, of course, because they're useful enough to keep around, crude though they are.

There are now coding aids that will suggest corrections to compiler errors and offer to add pieces of code based on context.  In my experience, these are a mixed bag.  They work great in some contexts, but they are also good at suggesting plausible-but-wrong code, sometimes so plausible that you don't realize it's wrong until after you've tried it in a larger context, at which point you get to go back and undo it.

There's always been a tension between the literal way that computers operate and the much less literal way human brains think.  For a computer, each instruction means exactly the same thing each time it executes and each bit pattern in memory stays exactly the same until it's explicitly changed (rare random failures due to cosmic rays and such can and do happen, but that doesn't really change the argument here).  This carries over into the way things like computer languages are defined.  A while loop always executes the code in its body as long as its condition is true, ls always means "list files" and so forth.

Human brains deal in similarities and approximations.  The current generation of ML represents a major advance in enabling computers to deal in similarities and approximations as well.  We're currently in the early stages of figuring out what that's good for.  One early result, I think, is that sometimes it's best just to talk to a computer like a computer.

Saturday, February 3, 2024

What's in a headline? Find out here

Goodness, it looks like 2023 was an all-time low for this blog, with one (1) post.  Not sure how that happened.  I honestly thought I'd posted at least one more.  On the other hand, I suppose it's consistent with the overall handwringing about whether there's even anything to post here.  But this post won't be that.

When I was in journalism class in high school, which was more than a few years ago to be sure, I was taught the "inverted pyramid": put the most important information, the who, what, where, when, why and how at the top of the article, then the important detail, then other background information.  The headline should concisely sum up the most important facts at the top.

Some typical headlines might be

  • Pat's Diner closing after 30 years
  • New ordinance bans parking on Thursdays
  • Midtown high senior wins Journalism award

If you've noticed that the titles (that is, headlines) of posts here don't exactly follow that rule, that's because I'm writing opinion here, not news.  That's my story, and I'm sticking with it even as I go on to complain about other people's headlines.

One of the worst sins in old-school journalism was to "bury the lede", that is, to put the most important facts late in the story (lead as in lead paragraph is spelled lede, probably going back to the days of lead type where the usual spelling might invite confusion).  If Pat's diner is closing, you don't start with a headline of Local diner closing and a paragraph about how much people love their local diners and only later mention that it's Pat's diner that's closing.

Except, of course, that's exactly what happens a lot of the time.  Here are some examples from the articles currently on my phone:

  • Windows 11 looks to be getting a key Linux tool added in the future
  • Nearly 1 in 5 eligible taxpayers don't claim this 'valuable credit', IRS says
  • 46-year old early retiree who had $X in passive income heads back to work -- here's why
I've tried to get out of the habit of clicking on articles like these, not because I think it will change the world (though if everybody did the same ...), but because I almost always find it irritating to click through on something to find out that they could have just put the important part in the headline:
  • Linux sudo command may be added to Windows 11
  • Nearly 1 in 5 eligible taxpayers don't claim earned income credit, IRS says
  • Early retiree with $X in passive income back to work after house purchase and child
One of these rewrites is noticeably shorter than the original and the other two are about the same length, but they all include important information that the original leaves out: which Linux tool?; which tax credit?; why go back to work?

The lack of information in the originals isn't an oversight, of course.  The information is missing so you'll click through on the article and read the accompanying ads.  The headlines aren't pure clickbait, but they do live in a sort of twilight zone between clickbait and real headline.  If you do get to the end of the article, you'll probably see several more links worth of pure clickbait, which is an art form in itself.

Real headlines aren't dead, though.  Actual news outlets that use a subscription model tend to have traditional headlines above traditional inverted-pyramid articles.  They probably do this for the same reason that newspapers did: Subscribers appreciate being able to skim the headline and maybe the lede and then read the rest of the article if they're interested, and that sells subscriptions.

I'm pretty sure half-clickbait headlines aren't even new.  The newspaper "feature story" has been around considerably longer than the web.  Its whole purpose is to draw the reader in for longer and tempt them to browse around -- and either subscribe for the features or spend more time on the same page as ads, or both.  For that matter, I'm pretty sure a brief survey of tabloid publications in the last couple of centuries would confirm that lede-burying clickbait isn't exactly new.

I started out writing this with the idea that the ad-driven model of most web-based media has driven out old-fashioned informative journalism, and also those kids need to get off my lawn, but I think I'm now back to my not-so-disruptive technology take: Clickbait and semi-clickbait aren't new, and the inverted pyramid with an informative headline isn't dead.  In fact, when I checked, most of the articles in my feed did have informative headlines.

In part, that's probably because I've stopped clicking on semi-clickbait so much, which is probably changing the mix in my feed.  But it's probably also because the web hasn't changed things as much as we might like to think.  All three kinds of headline/article (informative, semi-clickbait, pure clickbait) are older than the web, and so are both the subscription and ad-based business models (though subscription print publications often had ads as well).  It's not too surprising that all of these would carry through.

Monday, January 9, 2023

On web standards and social networking

I started this blog, um, a few minutes ago, back when I was involved with a couple of the committees involved in developing standards for the web, and it seemed like one thing a person in my position was supposed to do was to blog about it, whether to try to make one's expertise generally available, or to promote one's brand or consulting services, or to become visible as part of a group of similar individuals (the term "blogroll" comes to mind), or to help set the future direction of the web by presenting brilliant analyses or ... something of that nature.

Fortunately, I soon separated the blog from my professional life and settled into just putting out whatever thoughts I had as I wandered the web.world, without a lot of concern for what, if anything, it might all lead to.  In the event, it hasn't led to all that much ... a few dozen followers, the occasional comment, and readership well below even thinking about trying to monetize anything ... but it has been a satisfying experience nonetheless.  I've learned all sorts of things, and writing about it has given me the opportunity to think things through, organize my thoughts and maybe even get better at writing.  The whole standards-committee thing seems long ago and far away.

Imagine my surprise, then, when an Ars Technica article on Mastodon popped up in my newsfeed and brought it all back.

When we last left our story, I was musing about how recent turbulence concerning cryptocurrencies and social media, and Twitter in particular, had gotten me thinking about what "web" even meant anymore and concluding that at least the core of the web, namely its interconnections, was alive and well, and also that it didn't have all that much to do with the turbulence.  Before that, I had said that there didn't really seem to be all that much to blog about.  Things were happening, but not a lot of things that I had much to say about.

But Mastodon is interesting, not just because of its role as a potential "giant killer" for Twitter -- I'm still not inclined to speculate on how that might shake out -- but because of what it is and how it was put together, both in its structure and in the process that led to it.  Allow me to take a walk down memory lane:

When I was involved in the standards process, the typical web standard went through a life cycle something like this:

  • Someone, typically one of the Major Players, would create some new protocol or class of application to try to take advantage of the opportunities to be had on the rapidly expanding web.  This was after the major protocols like TCP, FTP, HTTP and the various email protocols were widespread.  Those tended to be less blatantly commercial, even though major corporations were generally involved.
  • If the idea looked useful, other players, large and small, would try to work with it, using whatever documentation was available.
  • This would often lead to a mess.  It's hard to write clear, complete documentation and it's almost guaranteed that once other people start using a system they'll try things that the original authors hadn't thought of.  When it's not clear what should happen in a particular situation, people will take their best guess, and different people will guess differently.
  • People will also want to add new features to cover cases that the original authors hadn't thought of, or did think of but didn't have time to implement, or implemented in what seemed like a less-than-optimal way, or whatever.
In some ways, this is a good problem to have, since it means people are actually using the system, probably because it meets some need that hadn't been addressed before.  The flip side, though, is that in a networked world a system only works, or at least only works well, if people agree on how to use it.  If my version of AwesomeNet thinks that the command for "make everything awesome" is MKAWSM and yours thinks it's make-awesome, then chances are things won't be so awesome.

There are plenty of other minor disagreements that can happen, either because different people made an arbitrary choice differently, or because there's a genuine disagreement as to the best way to do something, or for any number of other reasons.  If this happens enough to be a real problem, there's usually a call for everyone to get together and create an agreement on which way to do things.  A standard, in other words.

Writing standards is a tricky thing.  You want to capture what people are currently doing, but in an abstract enough way to avoid just having a laundry list of things people currently do.  You want to establish boundaries that are tight enough to rein in the chaos, but not so tight to prevent people from finding new and better ways of doing things.  There are often several ways to do this.  For example, for the difference in command names you might
  • Just pick one, say make-awesome, and "deprecate" the other, meaning that implementations of AwesomeNet aren't required to support it and if your code does use it, you should update your code.
  • Pick one as preferred, require implementations to understand the other one, but forbid them from using it.  That means that a standard implementation of AwesomeNet will never use MKAWSM, but if someone talking to it does, it will understand (this is an example of Postel's principle).
  • Allow both, usually by defining one as an "alias" for the other, so that most of the standard text can just talk about make-awesome, except for the part that says "you can use MKAWSM anywhere you can use make-awesome"
  • Define an "abstract syntax" and talk about <make awesome> as a placeholder for "whatever name the implementation chooses to use for the make everything awesome command".  This means that there will need to be some sort of protocol for two implementations to tell each other which names they actually use.  That's probably not worth the trouble in most cases, but it's an option nonetheless.
  • If "make everything awesome" is just a convenient shorthand for a bunch of other commands, define a general way of defining shorthands like that (often called "macros") and leave it out of the "core standard" entirely.  There are lots of ways to implement macros, since a macro language is essentially a programming language (even if it's not functionally complete), so this is probably only a good idea if at least some of the existing implementations already support it.
  • There are probably several other approaches I'm not thinking of.
There are similar issues with features that only some of the existing implementations support.  Do you require everyone to support everyone's features?  Do you define a "core set" and make the rest optional?  Do you say that some existing features aren't allowed in the standard, so implementations that have them have to drop them?  Or maybe something else?

Another important question is "what happens in this particular special case?".  Sometimes the answer is "it's this particular behavior that you might not have thought of, and here's why".  Sometimes the answer is "that's an error, and the implementation should report it like this".  Sometimes, though, the answer is "the behavior is unspecified", either to leave room for new features or for the practical reason that different existing implementations do different things, or for whatever other reason.  This is more useful than it might seem.  It tells implementers that it's OK to do whatever's easiest, and not to expect any particular behavior in certain situations (and maybe try to avoid those situations altogether).

There are lots of other principles and techniques that experienced standards writers employ (learning some of these as a not-so-experienced standards committee member was one of the best parts of the experience).  One that sticks in mind is the principle that implementations should be able to safely ignore things they don't understand, so that it's safe to interact with something that implements a newer version of the standard.

In a typical standards process, there are dozens of questions to hammer out, and the answers are often interconnected.  It's a tricky technical problem and, of course, there are political considerations as well.  In my experience the politics are typically pretty civil, but most participants come in with certain "red lines" they won't cross, usually because it would cost more to implement them than the standard is worth to them since there are already customers out there using the not-yet-standardized products.  The usual approach is to stand firm on those and be prepared to be flexible on anything that doesn't cross a red line.  If two or more participant's red lines overlap, things can get tricky.

After all the meetings, if all goes well, the end result of this is a carefully crafted standards document full of MUST [NOT] and SHOULD [NOT], which are so important that there's actually a standard defining what they mean.

The new standard captures everything the committee could capture about what it means to implement and use whatever's being standardized.  With luck, the standard is at least self-consistent, but there will be parts that are deliberately left unspecified for reasons like those given above.  There will also be plain old mistakes, ideally small ones that can be corrected by errata (corrections, ideally short and specific, published in a separate section or document) but sometimes larger ones that will require more meetings and a new version of the standard.

Since standards need to be flexible, a standard doesn't always answer every question you'll need answered when coding to it.  Because of this, it's common for a separate "interoperation committee" to form once a standard is out.  These committees essentially fill in the blanks to create "profiles" that say how to use a particular standard in particular situations.  There might be a lightweight profile that's meant to provide only the core features so it's easier to implement and run.  There might be a security-oriented profile that specifies features to enable and parameters to use ("digital signatures are required for each message and private keys must be at least 2048 bits").  There might be a profile aimed particularly at business use, or whatever.

I've gone through all this in detail because, judging by the Ars article, all of these things either have happened with Mastodon, or may happen at some point because the same basic issues have come up.  More than that, Mastodon and similar services are, in fact, based on the ActivityPub standard, which specifies two protocols, one for clients to talk to instances  to interact with an inbox and outbox, and one for instances to send traffic to each other.

(An instance is a server in the sense of the client-server model, but not in the sense of a particular process or a server machine -- at least in theory, an instance could run on multiple physical servers and a single physical server could host multiple instances)

ActivityPub is meant to be very general-purpose, but in the context of social networking only some of the features are really important, so implementations in the Fediverse (the world of Mastodon and Mastodon-like services that talk to each other) will naturally tend to pay more attention to those features, which is probably fine until someone tries to take advantage of other features.  The standard for data encryption and signatures is not officially part of the system, so implementations that support it still have to deal with unencrypted data.  ActivityPub relies on a standard called WebFinger to discover what instances are out there, so implementing a real ActivityPub instance also means dealing with WebFinger.

And so on.

All of this is perfectly normal in the world of web standards.  A standard is meant to reduce uncertainty and make it clear where the remaining uncertainty is, and establish common vocabulary and practices.  It isn't meant to solve all problems with interoperation -- it's great if it can, but that's not always possible.  It isn't meant to answer all questions an implementer might have, and in fact it deliberately doesn't answer some questions so that implementers will be free to come up with better answers.  In general a standard is more about what than how (though a what in one context can be part of the how in another and vice versa).

In any case, ActivityPub only talks about how instances talk to each other and how clients interact with instances.  It doesn't, and shouldn't, talk about how people using it for social networking should interact.  That's a matter of community guidelines, that is, what the people running the actual instances will or won't allow on them.  Since the instances are deliberately federated, rather than owned by one entity as with Twitter, these decisions will be, too.

One particularly interesting point is whether posts to one instance can be kept private to that instance.  This proved contentions, so Hometown was forked off of Mastodon.  Hometown allows posts to be private to a particular instance.  Mastodon doesn't.

The good news, I think, is that federated services built on web standards, while messy in real life, can and do work.  Mastodon's success or failure depends more on how community guidelines shake out and whether people prefer to spend their time there than it does on the strength of the standards.  I only spent a lot of time on standards in this post because it was striking to me how much of what I learned back in those days is still relevant.


One other thing struck me while pondering the article.  This all seems a whole lot like Usenet, just with different underlying technology.

Usenet used an email-based model where a particular user could subscribe to various newsgroups, receiving emails as updates came in, and publish messages on those groups, either new messages or replies to a thread that was already going.  The main technical difference is that early usenet relied on a old protocol called UUCP (Unix-to-Unix Copy) to transfer files of messages point-to-point between sites (often but not always universities or corporations).  UUCP isn't used much any more, but, like many old standards, it is still in use here and there.

The main externally visible difference, besides the use of email, was that the newsgroups were owned by administrators (these might not be the server administrators, though server administrators could effectively veto a group by filtering it out).  Rather than tag a post with #this or #that, you'd post to comp.sci.this or alt.that.discuss or whatever.

From a social point of view, though, the similarities seem significant.  Just as site administrators could establish rules, such as by blocking people from posting or filtering out newsgroups, Mastodon instance owners can establish their own standards.  Just as different people would have different ideas as to what sort of discussion was acceptable and different sites and different newsgroups could have different standards, different instances have different rules of conduct.

Newsgroups allowed people with similar interests to meet up and discuss things they were interested in.  This included not only technical topics like scientific specialties or programming languages, but social topics like music and art and a fair bit of quite gamy content.  They also allowed otherwise marginalized people to gather together, and for the curious to find out a bit about an unfamiliar group of people, but also for trolls and worse to barge in if they could get past the admins.

In other words, from a social point of view, they had pretty much all the features, good and bad, of modern social networking communities.  Whether you want to see that as a glass half full -- people keep finding ways to get together -- or half empty -- even after decades we're still up against the same problems -- or a bit of both -- my general inclination -- is up to you.  If nothing else it might provide a counterweight to claims that any of what's going on now is unprecedented.


There's one other technical point that jumped out, though I doubt it will interest many people.  Two patterns of communication come up over and over again in distributed services.  One is the request/response pattern: I ask you a question or to do something, you respond with an answer or "I did it (and this happened)"/"I couldn't do that (for this reason)"/....  The other is the publish/subscribe pattern (pub/sub for short), where any number of parties can publish a message on a topic and any of those (including the publisher) can subscribe to messages on that topic.  Those aren't the only possibilities, but they account for a lot of traffic.  ActivityPub, as the name might suggest, is a pub/sub protocol.

The whole point of pub/sub is that publishers and subscribers don't know about each other, or whether any of them even exist.  I can publish to a topic that no one's listening to, and, depending on the type of service, either that message will be dropped on the floor, or it will be saved for delivery to anyone who does eventually subscribe.  In either case, each subscriber will see its own copy of the message.  The only difference is whether "each subscriber" means "each subscriber that was there when the message was published (more or less)" or "each subscriber that ever subscribes to this topic".

Since publishers and subscribers don't know about each other, there has to be some sort of intermediary.  For a large system, there will actually be many intermediaries communicating with each other in order to make sure published messages are delivered to subscribers.   Publishers and subscribers talk point-to-point with those intermediaries.  I tend to think of this as "I publish to the cloud, whatever's in the cloud does whatever it does, and the subscriber gets the message from the cloud".

Mastodon and company fit this perfectly: You send a message to the instance you're using, it talks to other instances, and people see your message.

The old Usenet followed the exact same pattern, just that the mechanism for the servers to talk to each other was quite a bit different.

Wednesday, December 28, 2022

Goblin Mode McGoblin Modeface

Each year, Oxford Languages, which produces the Oxford English Dictionary among other things, selects a word of the year, "a word or expression reflecting the ethos, mood, or preoccupations of the past twelve months, one that has potential as a term of lasting cultural significance." This year, the choice was opened up to online voting.  Over 300,000 people cast their votes over the course of two weeks and the winner was goblin mode

a slang term, often used in the expressions ‘in goblin mode’ or ‘to go goblin mode’ – is ‘a type of behaviour which is unapologetically self-indulgent, lazy, slovenly, or greedy, typically in a way that rejects social norms or expectations.’

The runners up were metaverse and #IStandWith.

The press I've seen about this tends to emphasize the online voting aspect of the selection, with the suggestion that those rowdy internet folks got one over on the stodgy old OED, but I think that misses a couple of important points.

First, the OED as an institution isn't particularly stodgy. While Oxford might suggest the British power structure or Tom Lehrer's indelible image of "ivy-covered professors in ivy-covered halls" (leaving aside that that's more a US reference), the dictionary itself has historically been concerned with documenting how people actually use the English language, rather than trying to dictate what "proper English usage" might be. It is descriptive rather than prescriptive.

The dictionary styles itself "the definitive record of the English language". This is meant to include everything, including dialects from all over the world, terms of art for all kinds of trades and professions, archaic words from a thousand years ago and all manner of other English usage, including today's internet slang.

From the OED's point of view, goblin mode is a perfectly good term to research and define, as is anything else that people actually use. If a bunch of internet trolls had decided to vote for glurglebyte or some other made-up word, and the OED actually went with it, that would have been a different matter, but there are plenty of examples of people using goblin mode prior to the online vote. The word of the year page even gives a couple of examples from The Grauniad and The Times.

One might argue that people weren't using goblin mode all that much, and some other term, whether metaverse, #IStandWith or something else, might have made a better word of the year, but the fact that hundreds of thousands of people voted for it suggests that, even if the votes were meant ironically, there's something there that led people to coalesce around that particular word. You could even argue that the online vote gives an otherwise ordinary bit of internet slang a much better chance of becoming "a term of lasting cultural significance".

The word of the year page goes further and argues that goblin mode is indeed a good word for a year in which people are finding their way out of a world of lockdowns and overflowing hospitals and questioning just which pre-pandemic norms are really worth keeping. Sure, the Oxford folks may just be trying to put a brave face on being pwned, but to me it seems more like they saw the results and weren't particularly bothered.

I think there's another important point to note here. While there have been plenty examples of internet-driven crowds doing bad things, or even horrible things, it's worth remembering that this particular crowd of net.denizens was operating from a completely different mindset: As with Boaty McBoatface, they did it because it was fun, for sheer hack value.

While it would be a mistake to ignore bad behavior, it would also be a mistake to over-focus on it. Like anywhere else, bad things can happen on the web without making the whole place a cesspit. There's lots of questionable content out there and a certain amount of outright lies and hate, but there's also a lot of good information and not a little outright goofiness. However much there are people out there trying to steer us toward conflict and anger, we still have choices about what we browse and what we post.

A few hundred thousand people upvoting a random bit of slang may be a drop in the bucket, but there are a lot more drops like it. That says something about who's out there and what they want, just as surely as the nastiness elsewhere does.

Friday, November 25, 2022

Is it the end of the Web as we know it?

Or maybe a better question is "What is this Web we speak of, anyway?"  My default answer: dunno, I'm figuring it out as I go along.

I think the last time I mulled that second question over, in the context of "Web 2.0" (Remember Web 2.0? I think it was one of the exits on the Information Superhighway), my opinion was that the big division was between everything that came before and "the Web", or "Web 1.0" as I don't recall anyone calling it very much.  In other words, that first time someone chased a link from one web page to another using a graphical browser was an epochal event, even if hardly anyone noticed at the time, and what's come after has been a steady stream of technical improvements and services founded on that base.

Two types of service in particular have been prominent over the last decade or so: social media and cryptocurrencies, and both seem to be in questionable shape at the moment.  I've cast a somewhat skeptical eye on both over the years, but that hasn't stopped them from intersecting with the lives of billions of people.

Billions in the case of social media, at least.  I don't actually know how many people own cryptocurrencies, directly or indirectly, but who among us hasn't seen an ad for one or another, or read about the latest crash/rugpull, not to mention the millions of people living in countries that have made cryptocurrencies a significant part of their monetary system, so I'd say billions there, too, depending on how you count.

But the past year has not been particularly kind to either.  This is all over the news at the moment, but just for later reference, let me list a few items of note

  • Elon Musk's takeover of Twitter is off to a rocky start.  My guess is that the new ownership will find some way to keep the servers running and reach some sort of new equilibrium, but with a sizable majority of the workforce either forcibly terminated or choosing "take the severance and get on with my life" over hardcore intensity, it's safe to say there will be a period of adjustment.  Major advertisers seem to be sitting on the sidelines in the meantime and, thanks to the billions in debt that came with the leveraged buyout, the burn rate has increased from "we'll be out of cash on hand in a couple of years if nothing changes" to "we'll owe more in interest this year than we have in the bank"
  • Facebook seems to have wandered off into the Metaverse.  This seems to me to be a classic case of optimistic extrapolation run amok.  Virtual reality is interesting technology.  It clearly at least has good potential for useful applications in areas like design and education.  Getting from there to a world where people spend comparable amounts of time in the virtual world to what they currently spend on scrolling through their feeds seems like a stretch.  Personally, I've tried out an Oculus, and there were definitely some cool things on offer, from a deeply moving immersive art piece on refugees to super slow-mo of a couple of guys making showers of sparks that you can walk around in.  But the age of those links should tell you how long ago that was.
  • No less than Ian Bogost, of Cow Clicker fame among many other things, has written an article entitled The age of social media is ending.  It should never have begun.  I'm incorrigibly skeptical about proclamations of the End of an Age, or the beginning of one for that matter, but Bogost makes some good points about the crucial distinction between social networking (good, and computers can be very helpful) and social media (the never-ending pursuit of clicks, shares, followers, content and so forth, not so good in Bogost's estimation).
  • Crypto exchange FTX has imploded, taking SBF (its colorful founder Sam Bankman-Fried) down with it, the latest of many crypto plays that turned out, shockingly, to have been built atop a house of cards.
  • Bitcoin, the grandaddy of them all, has fallen from its all-time high of close to $69,000 to, at this writing, around $16,000, down over 75%.  Interestingly, the price of BTC had pretty closely tracked the price of the S&P 500, leveraged about 3:1, until the recent FTX fiasco sent it further down.  What it didn't do was rise as reserve currencies hit a round of inflation, which as I dimly understand it was what was supposed to happen.
  • The whole advent of crypto exchanges has only emphasized the disconnect between cryptocurrency in theory -- decentralized, anonymous, free from government interference -- and practice -- centralized by exchanges and mining pools, generally tied to bank accounts in reserve currencies and subject to government regulation from several directions.
Plenty of cold water to be thrown on social media and cryptocurrency enthusiasts, but does this mean the whole thing is coming to an end?

Social media doesn't seem to be going away.  There's even been a rush of activity on Twitter, speculating about the demise of Twitter and what to do next, and if you want to use that as a jumping-off point for a rant about modern culture eating itself, be my guest.

Even if cryptocurrency is dead as an alternative to reserve currencies and more conventional payment systems -- I'm not saying it is or isn't, but even if -- I doubt it's going to stop trading anytime soon.  My personal benchmark for "crypto is dead" would be something on the order of "I can personally mine and take ownership of 1 BTC using my phone at a nominal cost".  We're quite a ways from that, but on the other hand there's still plenty of time left before the mining reward rounds down to zero sometime around the year 2140 at current rates.

In short, there are certainly some major disruptions going on in some of the major features of the Web landscape, but, in answer to the question in the title, they seem more like the kind of shakeup or reining in of excess that seems to happen fairly regularly, rather than some sort of deathblow to the Web itself.  Webvan, anyone?


But then, as I asked at the top of the post, what is this Web we speak of, anyway?

Apart from the time constraints of a busy life, I've been a less apt to post here, and in fact started a whole other blog (which I also don't post on very frequently), because I had come to the conclusion that a lot of things I wanted to post about weren't really related to the Web.  Even here, one of my more recent posts was me fretting about what even is the Web any more and why am I not writing about it?

That post, though, mainly talked about what the Web means day to day.  For better or worse, a lot of that has to do with social media, and I have no interest in devoting a large chunk of my time to what's going on in social media.  Plenty of other people do want to do that and do a better job than I would.  But what is it that makes the Web webby, and how does that relate to the Web as it impacts our lives?

If you peel back all the layers, all the way back to that first link chased on that first graphical browser, the Web is about links.  If you've ever meandered from one Wikipedia article to the next, following links in the page or the "see also", you've been using the Web at its webbiest.  Likewise, I think, if you've browsed your favorite magazine and followed the links from one article to the next, within that publication or outside.  The web of interconnections is what makes the Web.

That primordial web is still around and likely isn't going anywhere, because this sort of browsing from one topic to the next is probably pretty tightly wired in to the way our brains work.  What has happened is that a couple of layers have grown on top of it.

One is search.  You can find all sorts of interesting things by browsing, but often you just want to know where to find, say, a replacement battery for your cordless vacuum.  Browsing would be a horrible way to go about that, but you don't have to.  Just type some likely terms into your search bar and there you are.  This is useful enough that companies can make quite a bit of money by running ads on a search platform, and I doubt this business model is going away, whatever the fortunes of the particular companies providing it.

Social media constitutes a different layer on top of the web.  As I've mentioned before, I'm not active on social media, but it seems to me that while you can certainly browse the links of your social network to find people that people you know know, and you can follow links from a post/tweet/story/whatever to more things that you might be interested in, the main innovation in social media is the feed, which brings content to you without your having to search for it or stumble onto it.

This isn't limited to social media.  I spend quite a bit of time reading my news feed, anti-social though that may be.  In any case, I think there is a distinction to be made between information you actively seek out and information that some person you're following, or some algorithm, or some combination of the two, brings to you.  I doubt that this is going anywhere either, but it looks like there is some rethinking going on about how to control the feed of incoming information, and, to some extent, how much attention to pay to it at all.

Interestingly there was a lot of interest a while back in social search, where you could ask questions of the crowd and people would dig up answers, and people would get paid, and various companies would take various cuts, one way or another.  I think that fell by the wayside because automated search does a better job in many cases, and when it doesn't, asking someone you know without anyone in the middle generally works fine, or at least no worse than trying to ask a pool of random people.

Also interesting: Nothing in those last few paragraphs involves cryptocurrencies, even though I implied earlier that upheaval in that world might have something to do with "the end of the Web as we know it".  I think that's because, even if stories about cryptocurrency have been all over the web, cryptocurrency itself doesn't have much to do with the Web, because it just isn't webby in that primordial sense.  Following some sort of network of transactions, link to link, is not exactly played up as a major use case.


I've actually found working through this pretty encouraging.  A few posts ago (that is, over a year ago), I was ruminating on whether there was anything webby left that I might want to talk about.  Going back to first principles about what makes the Web the Web immediately revealed a view in which the very basis for the Web is alive and well, and aspects of it that are prominent now, like search and feeds, can at least be understood in relation to it.

Saturday, July 30, 2022

Dear screenwriters: Bits can be copied

There's a new thriller movie out on one of the major streaming services.  I don't think it matters which movie or which service.  If you're reading this years from now, that statement will still probably true, at least to the extent there are still streaming services.  If you're pretty sure you know which 2022 movie this is referring to, but haven't seen it yet and want to, be warned.  There are mild spoilers ahead.

As with many such films, the plot revolves around a MacGuffin, a term apparently coined by Angus MacPhail, which Alfred Hitchcock famously glossed as "the thing that the spies are after, but the audience doesn't care."  In other words, it doesn't really matter what the MacGuffin actually is, only that the characters do care who gets it and so spend the whole film trying to make sure it ends up in the right place and doesn't fall into the wrong hands.

The plot device of a MacGuffin is much older than the term itself, of course.  The Holy Grail of Arthurian legend is one, and the oldest recorded story known so far, The Epic of Gilgamesh, sends its protagonist to the Underworld in search of one.

Clearly there's something in the human brain that likes stories about finding a magic item and keeping it away from the baddies, and in that sense the MacGuffin in the big streaming service movie is a perfectly good MacGuffin.  The protagonists and antagonists vie over it, it changes hands a few times, lots of things explode and eventually the MacGuffin is destroyed, ending its magic powers.

Except ...

The MacGuffin in this case is basically a gussied-up thumb drive containing information certain people do not want to become known.  Our protagonist receives the item early in the film (with suitable explosions all around) and promptly sends it off to a trusted colleague for safekeeping and decipherment.  Later we learn that the trusted colleague has, in fact, received the drive and cracked its encryption, revealing the damning information.

In real life, this is when you would make a backup copy.  Or a few.  Maybe hidden in the insignificant bits of JPEGs of cute kittens on fake cloud accounts with several different services.  Maybe on some confederate's anonymous server somewhere on the dark web.  Or at least on a couple more thumb drives.  For bonus points, swap out the contents of the original thumb drive for a clip of the Dancing Baby or some similar slice of cheese.

(As I understand it, there are some encrypted devices that are tamper-resistant and designed not to be readable without some sort of key, so you can't easily copy the encrypted bits and try to crack the encryption offline, but here we're told that the encryption has already been cracked, so they have the plaintext and can copy it at will.)

The problem with that, of course, is that the drive would then cease to be a MacGuffin.  Why send teams of mercenaries and a few truckloads of explosives after something that might, at best, be one copy of the damning information?  The only real reason is that it makes for an entertaining way to spend an hour or two and screenwriters know all about writing MacGuffin-driven thriller plots.

Which is fine, except ...

If you think about the practicalities, there's still plenty of tension to be had even if the bits are copied.  Our protagonist has reason to want the secret information to remain secret except in case of a dire emergency, but they also want to be able to preserve it so that it can be released even if something happens to them.  How to do this?

If you've uploaded the bits to one of the major services, then who gets access to them?  Do you keep the information in a private file, memorize the account password and hope for the best?  What if you're captured and coerced into giving up the password?  On the other hand, if you die without revealing the information, it will just sit there until the account is closed, unless someone can figure out enough to subpoena the major service into handing over access to a bunch of cat pictures hiding the real information.  Which you encrypted, of course, so who has the key?

Maybe you share the encrypted bits with a journalist (or two, or three ...) with an "in case of my death" cover letter saying where to get the encryption key.  But what if they decide to go public with it anyway?  The more journalists, the better the chance one of them will publish if something happens to you, but also the better the chance that one of them will publish anyway.

Maybe you put the encrypted bits someplace public but write the encryption key on a piece of paper and lock it away in a safe deposit box in a Swiss bank.  Now you've traded one MacGuffin for another.  But maybe someone at a different spy agency has a backdoor into your encryption.  The baddies at your own agency are going to keep the contents to themselves, but maybe one of them has a change of heart, or gets double-crossed and decides to go public as revenge, and they need your copy since they no longer have access to the original bits and didn't make their own copy.

And so forth.  The point is that information doesn't really act like a physical object, even if you have a copy in physical form, but even so there are lots of ways to go, each with its own dramatic possibilities depending on the abilities and motivations of the various characters.  Most of these possibilities are pretty well-used themselves.  Plots driven by who has access to what information have been around forever, though some have paid more attention to the current technology than others -- "Did you destroy the negatives?" "Yes, but I didn't realize they'd left another copy of the photographs in a locker at the bus station ..."

Opting for a bit more realism here gives up the possibility of a "destroy the magic item, destroy the magic" plot, but it opens up a host of other ones that could have been just as interesting.  On the other hand, the movie in question doesn't seem to blink at the possibility of a full-on gun battle and massive explosions in the middle of a European capital in broad daylight.  Maybe realism was never the point to begin with, since that seems pretty unlikely.

Oh, wait ...


Thursday, June 2, 2022

Check out this new kitchen hack!

In case that title somehow clickbaited you to this quiet backwater, no this isn't really about cooking, but for your trouble: The easiest and least tearful way I know to slice onions is to cut them in half lengthwise, so each half has a little piece of the roots holding it together.  If you think of the roots as the South Pole and the stem end as the North Pole, the first slice is from pole to pole.

Chop off the stalk end and peel off the outer layers, under cold running water if that seems to help (I think this is a little easier than slicing the stem off first, but your mileage may vary).  Put the halves down on the flat side and slice vertically with the slices parallel, also running north-south.  Julia Child recommends another pass, horizontally, still slicing north-south, and who am I to argue?  At this point, the root and the shape of the onion layers are still holding everything together.  Finally, slice vertically, but with the slices running east-west.  Each cut slices off a little pile of nicely diced pieces.

This isn't new -- I first heard about it on a Chef Tell segment many years ago, Mastering the Art of French Cooking came out in 1961 and I'm sure it's been around much longer -- but it works a charm.  Bon Apetit, and remember that a dull kitchen knife is more dangerous than a sharp one.


So it's not new, but is it a hack?  And what's with all these "life hack" articles that have nothing to do with writing clever code?

For my money, the onion-dicing method is absolutely a nice hack.  A hack, really, is an unexpected way of using something to solve a problem.  The usual way to dice something is to slice it, then cut the slices crosswise into strips, then cut the strips crosswise into little dice.  If you try that with an onion, the root is in the way of the north-south slices described above, and the easy way to start is to slice it east-west, into rings.  You then have to dice up the rings, which are hard to stack since they're already separated, and like to slide around and separate into individual rings, and have a lot of exposed surface area to give off tear-producing onion fumes.  In short, you have a mess.

The chef's method takes advantage of the two things that otherwise cause problems:  It uses the root end to hold things in place and keep the exposed area to a minimum, and it uses the layering of the onion to save on cutting (if you omit the horizontal slices, as I usually do, you still get decently-diced pieces, good for most purposes, just a bit coarser).  This is the essence of a hack: using something in a non-obvious way to get the result you want.  It's particularly hackish to take advantage of something that seems to be an obstacle.

Not every hack is nice, of course.  The other popular meaning of hacking, that many geeks including myself find annoying, the computing analog of breaking and entering or vandalizing someone's property, stems from a particular type of hacking: finding unexpected vulnerabilities in a system and taking advantage of them to break the system's security.  As I've discussed at length elsewhere, this isn't necessarily bad.  White hat hackers do just this in order to find and patch vulnerabilities and make systems more secure.  The annoying part isn't so much that hack is associated with breaking and entering, but that it's associated with any kind of breaking and entering, regardless of whether there's any skill or actual hacking -- in the sense of making unexpected use of something -- involved.

I should note somewhere that hack often has negative connotations in software engineering for a completely different reason: If you take advantage of some undocumented feature of a system just to get something working, you have a fragile solution that is liable to break if the system you're hacking around changes in a future update.  In widely-used systems this leads to Hyrum's law, which basically says that people will write to what your system does, regardless of what you say it does, and with enough people using it, any externally visible change in behavior will break someone's code, even if it's not supposed to.

Hacking lives in gray areas, where behavior isn't clearly specified.  "Dice this onion with this knife" doesn't say exactly how to dice the onion.  Someone taking advantage of a quirk in an API can usually say "nothing said I couldn't do this".  There's nothing wrong with unspecified behavior in and of itself.  It's actively helpful if it gives people latitude to implement something in a new and better way.  The trick is to be very specific about what can happen, but put as few restrictions as possible on how.

There's an art to this.  If you're writing a sorting library, you could say "It's an error to try to sort an empty collection of things".  Then you have to make sure to check that, and raise an error if the input is empty, and whoever's using your library has to be careful never to give it an empty collection.  But why should it be an error?  A collection with only one thing in it is always sorted, since there's nothing else for it to get out of order with.  By that reasoning, so is an empty collection.  If you define sorted as "everything in order", that raises the question "but what if there isn't anything?".

If you define sorted as "nothing out of order -- no places where a bigger thing comes before a smaller thing", then the question goes away.  If there isn't anything in the collection, nothing's out of order and it's already sorted.  In math, something is vacuously true if there's no way to make it false.  "Nothing out of order" is vacuously true for an empty collection.  Often, allowing things to be vacuously true makes life easier by sidestepping special cases.

As a general rule, the fewer special cases you need to specify what happens, the easier a system is to write and maintain, the more secure it is against unwanted forms of hacking like security exploits and Hyrum's law, and the friendlier it is to good kinds of hacking, like people finding clever new ways to improve the implementation or to use the system.


So what about all this "life hacking"?  Should people use computing jargon for things that have nothing to do with computing?  I have two answers.

First, the term hack isn't really about computing.  It's about problem solving.  The first definition in the Jargon File (aka Hacker's Dictionary) is "Originally, a quick job that produces what is needed, but not well.", with no mention of computing, and elsewhere it attributes early use of the term to ham radio hobbyists.  As it happens, the actual definitions of hack in the Jargon File don't really include "using something in a non-obvious way to get the result you want", but I'd argue that the definition I gave is consistent with the The Meaning of 'Hack' section.

Second, though, even if hack was originally only applied to coding hacks, so what?  Language evolves and adapts.  Extending hack to other clever tricks reveals something new about what people are trying to get at by using the word, and in my view it's a lot better than restricting it to security exploits, clever or not.  Sure, not every "kitchen hack" or "life hack" is really that hackish, and headline writers are notoriously pressed for time (or lazy, if you're feeling less generous, or more apt to make money with clickbait, if you're feeling cynical), but there are plenty of non-computing hacks floating around now that are just as hackish as anything I've ever done with code.


Thursday, October 28, 2021

Why so quiet?

I hadn't meant for things to go so quiet here, and it's not just a matter of being busy.  I've also been finding it harder to write about "the web", not because I don't want to, but because I'm just not running across as many webby things to write about.

That got me thinking, just what is the web these days?  And that in turn got me thinking that the web is, in a way, receding from view, even as it becomes more and more a part of daily life, or, in fact, because it's more and more a part of daily life.

There is still plenty of ongoing work on the technical side.  HTML5 is now a thing, and Adobe Flash is officially "end of life" (though there's a bit of a mixed message in that Adobe's site for it still says "Adobe Flash Player is the standard for delivering high-impact, rich Web content." right below the banner that says "Flash Player’s end of life is December 31st, 2020").  Microsoft has replaced Internet Explorer with Edge, built on the Chromium engine.  Google is working to replace cookies.  I realize those are all fairly Google-centric examples, and I don't want to imply that no one else is doing important work.  Those were just the first examples that came to mind, for some strange reason.

On the one hand, those are all big developments.  Adobe Flash was everywhere.  It's hard to say how many web pages used it, but at the peak, there would be on the order of billions of downloads when Adobe pushed a release, because it was in every browser.  Internet Explorer was the most-used browser for over a decade, and the standard browser on Windows, which would put its user base in the billions as well (even if some of us only used it to download Chrome).  Somewhere around 20% of web sites, however many that is, use cookies.

On the other hand, they are all nearly invisible.  I can remember a few times, early in the process a couple of years ago, when Chrome wouldn't load some particular website because Flash was disabled, but not enough to cause any real disruption.  I'm sure that the shift from Explorer to Edge was disruptive to some, but when I set up a laptop for a relative a little while ago, they were much more concerned with being able to check email, write docs or play particular games than which browser was making that happen.  As for cookies, I haven't looked into exactly how they're being replaced, because I don't have to and I haven't made time to look it up.

Because the web is everywhere, the huge number of websites and people browsing means that it's most important to keep everything running smoothly.  Unless you're introducing some really amazing new feature, it's usually bad news if anyone knows that you made some change behind the scenes (whatever you think of Facebook as a company, please spare a thought for the people who had to deal with that outage -- even with a highly-skilled, dedicated team keeping the wheels turning, these things can happen, and it can be devastating to those involved when it does).

The upshot here is that I don't really have much interesting to say about much of the technical infrastructure behind everyday web experience.  Besides not having been close to the standards process for several years,  I figured out very early that I didn't want to write about the standards and protocols themselves -- there are plenty of people who can do that better than I can -- but how they appear in the wild.  Thus the field notes conceit.

It was interesting to write about, say, Paul Vixie's concerns about DNS security or what copyrights mean in the digital age, but topics like that seem less interesting today.   Regardless of the particular threats, the real benchmark of computer security is whether people are willing to put their money on the web -- buy, sell, send money to friends, check their bank statements or retirement accounts, and so forth.  That's been the case for a while now, through a combination of security technology and legal protections.  Importantly, the technology doesn't have to be perfect, and a good thing, that.

The question of how creators get paid on the web is still shaking out, but one the one hand, I think this is one of those problems that is always shaking out without ever getting definitively resolved, and on the other hand, I'm not sure I have anything significant to add to the discussion.


As much as I don't want to write a purely technical blog, I also don't want to lose sight of the technical end entirely.  I'm a geek by training and by nature.  The technical side is interesting to me, and it's also where I'm most likely to know something that isn't known to a general audience.

Obviously, a lot of the important discussion about the web currently is about social media, but I don't want to jump too deeply into that pool.  Not only is it inhabited by a variety of strange and not-always-friendly creatures, but if I were commenting on it extensively, I'd be commenting on sociology, psychology and similar fields.  I muse about those on the other blog, but intermittently conjecturing about what consciousness is or how language works is an entirely different thing from analyzing social media.

Even so, Twitter is one of the top tags here, ironic since I don't have a Twitter account (or at least not one that I use).

My main point on social media was that some of the more utopian ideas about the wisdom of crowds and the self-correcting nature of the web don't tend to hold up in practice.  I made that point in the context of Twitter a while ago, in this post in particular.  I wasn't the first and I won't be the last.  I think it's pretty widely understood today that the web is not the idyllic place some said it would be a few decades ago (not that that kept me from commenting on that very topic in the most recent post before this one).

On the other hand, it might be interesting to look into why the web can be self-correcting, if still not idyllic, under the right circumstances.  Wikipedia comes to mind ...


Finally, I've really been trying to keep the annoyances tag down to a dull roar.  That might seem a bit implausible, since it's generally the top tag on the list (48 posts and counting), but in my defense it's fairly easy to tell if something's annoying or not, as opposed to whether its related to, say, copyrights, publishing, both or neither, so it doesn't take a lot of deliberation to decide to apply that label.  Also, with the web a part of everyday life, there's always something to be annoyed about.


So if you take out "technical stuff that no one notices unless it breaks", "social media critiques", "annoying stuff, unless maybe it's particularly annoying, funny or interesting", along with recusing myself from "hmm ... what's Google up to these days?", what's left?

Certainly something.  I haven't stopped posting entirely and I don't plan to.  On the other hand, there doesn't seem to be as much low-hanging fruit as there used to be, at least not in the particular orchard I'm wandering through.  Some of this, I think, is because the web has changed, as I said up top.  Some of it is because my focus has changed.  I've been finding the topics on the other blog more interesting, not that I've been exactly prolific there either.  Some of it is probably the old adage that if you write every day, there's always something to say, while if you write infrequently, it's hard to get started.

A little while ago, I went through the whole blog from the beginning and made several notes to myself to follow up, so I may come back to that.  In any case new topics will certainly come up (one just did, after all, about why Wikipedia seems to do much better at self-correcting).  I think it's a safe bet, though, that it will continue to be a while between posts.  Writing this has helped me to understand why, at least.