blarg?

November 26, 2020

Punching Holes

An early encoding proposal

As always, I am inexplicably carrying a deep seated personal grudge against anyone incurious enough to start with “because in C” when you ask them why computers do anything, but bear with me here. I know that a surprising amount of modern computing is definitely Dennis Ritchie’s fault, I get it, but even he existed in a context and these are machines made out of people’s decisions, not capricious logic-engine fae that spring to life when you rub a box of magnets with a copy of SICP. Quit repeating the myths you’ve been spoon-fed and do the research. A few hours in a library can save you a few decades in the dark.

Anyway, on a completely unrelated note: Today in wildly-unforeseeable-consequences news, I have learned where null-terminated strings come from. Not only are they older than Unix, they’re older than transistors and might be older than IBM. It turns out at least one of the roads to hell is paved with yesterday’s infrastructure.

“Coded Character Sets, History & Development” by Charles E. Mackenzie is an amazing technical artifact, approximately 75% mechanical tedium and 25% the most amazing deep-cut nerd history lesson I’ve seen in a while. I’ve gone on about how important Herman Hollerith and his card-readers were in the history of computing, but this document takes that to a much lower level, walking meticulously through the decision making processes by which each character’s bit sequence was determined, what constraints and decisions arose and how they were resolved, and where it isn’t boring as hell it is absolutely fascinating.

As an aside, it continues to be really unfortunate how much historical information about the decisions that have led up to modern computing is either hidden, lost or (I suspect most commonly) just ignored. There is a lot to learn from the Whys of so many of these decisions, lessons about process that transcend the implementation details lost in favour of easily-retellable falsehoods, and there’s an entire lost generation of programmers out there who found ESR’s version of the Jargon File before they found their own critical faculties and never quite recovered from that who’ll never learn those lessons.

(I mention it because I’m going to be talking about EBCDIC, and if your gut reaction to seeing that acronym is a snide dismissal for reasons you can’t really elaborate, I’m talking about you. Take it personally. Like a lot of Raymond’s work and indeed the man himself, his self-interested bastardization of the jargon file is superficially clever, largely wrong and aging very badly. Fortunately the Steele-1983 version is still out there and true to its moment in history, you’re still here to read it and a better future is still possible. I believe in all but one of you.)

On a less sarcastic note, there is a lot in here.

I didn’t realize quite how old ASCII is, for one. I mean, I knew the dates involved but I didn’t grasp the context, how completely disconnected the concerns of modern computing were from the creation of the ASCII standard. The idea of software, or decision-making implemented in software as relevant consumer is almost completely a non-issue, mentioned in passing and quickly brushed off. Far and away the most important concerns – as with EBCDIC, BCDIC and PTTC before it and dating back to the turn of the century – were about the efficiency of collating punch cards and fast line printing on existing tooling.

Printing, collating and backwards compatibility. In terms of importance, nothing else even came close. The idea of “code” as an information control-flow mechanism barely enters into it; that compilers exist at all is given a brief nod at the start of chapter 25 of 27, but otherwise it’s holes-in-cardboard all the way down. You can draw a straight line back in time from Unicode through a century of evolving punchcard standards all the way to the Hollerith Census Tabulator of 1890; Hollerith has cast an impossibly long shadow over this industry, and backwards compatibility with the form, machinery and practices of punch cards are entirely the name of this game and have been forever.

Early glyphs

It’s also amazing how many glyphs in various degrees of common use across various languages and systems were used, reconsidered and discarded for some wild variety of reasons as encodings evolved; the “cent” symbol giving way to a square bracket, various useful symbols like logical-not getting cut without any obvious replacements. Weird glyphs I’ve never seen on any keyboard in my life getting adopted then abandoned because they would have caused a specific model of long-established tape storage system to crash. The strangely durable importance of the lozenge character, and the time a late revision of BCDIC just … forgot “+”. Oops?

I had no idea that for a while there we were flirting with lowercase numbers. We were seriously debating whether or not computers needed a lowercase zero. That was a real thing.

Another thing I didn’t realize is how much of a dead end ASCII is, not just as a character set but as a set of practices that character set enables: *char++, I’m looking at you and all your footgun friends. I was never much of a student, but am I misremembering all that time I spent sorting and manipulating strings with tools that have wound up somewhere on the “merely obsolete” to “actively dangerous” spectrum, unsafe and unportable byproducts of a now-senescent encoding that nobody uses by choice anymore?

It’s really as though at some point, before about 1975, people just… hadn’t fully come to terms with the fact that the world is big. There’s a long chapter here about the granular implementation details of an industry struggling to come to terms with the fact that Europe and Asia actually exist and use computers and even if they didn’t sorting human text is a subtle problem and encodings aren’t the place it’s going to get solved, only for that discussion to get set shunted aside as the ghosts of compatibilities past shamble around the text rattling their chains.

There’s also a few pages in there about “Decimal ASCII” – basically “what if ASCII, but cursed” – a proposal with a such powerful Let Us Never Speak Of This Again energy that almost no modern references to it exist, high on the list of mercifully-dodged bullets scattered throughout this document.

But maybe the most interesting thing in here was about how much effort went into sorting out the difference between blank, space, null, zero and minus zero, which turns out to be a really difficult problem for all sorts of reasons. And the most incredible part of that is this:

An excerpt reading: How would one provide the traditional capability of leaving certain card columns unpunched (blank card columns) during keypunching to be filled with punched data on subsequent card punching operations? Such card columns would in fact have to be created by punching the Zero character that is equated to blank card column. In normal keypunching operations, such card columns are created by spacing, skipping or ejecting. Under this proposal, then, the relatively fast card motion of skipping or ejecting would be repalced by the relatively slow motion of manual keying by an operator. As in the previous argument, key punching productivity would be substantially reduced.

Null-terminated strings were “produced by the .ASCIZ directive of the PDP-11 assembly languages and the ASCIZ directive of the MACRO-10 macro assembly language for the PDP-10”, per Wikipedia, before manifesting themselves in C. But that’s not where they come from.

In fact null terminated strings existed long before C, because using a column of unpunched entries in a Hollerith card – a null column, in a convention that apparently dates to the earliest uses of punchcard collating and sorting machines – to indicate that you could terminate the card’s scan, was a fast, lightweight way to facilitate punch-card re-use and efficient data entry and re-entry, when that data was entered by punching it into cards.

That is to say, we somehow built the foundations of what would become a longstanding security exploit vector decades before anyone could build the operating systems it could exploit. Likely before the invention of the transistor, even; I’m trying to track down a citation for this now.

It’s sort of amazing that anything ever works at all.

July 30, 2020

Connections


Untitled

“A lunatic is easily recognized. He is a moron who doesn’t know the ropes. The moron proves his thesis; he has logic, however twisted it may be. The lunatic on the other hand, doesn’t concern himself at all with logic; he works by short circuits. For him, everything proves everything else. The lunatic is all idée fixe, and whatever he comes across confirms his lunacy. You can tell him by the liberties he takes with common sense, by his flashes of inspiration, and by the fact that sooner or later he brings up the Templars.”
– Umberto Eco, Foucault’s Pendulum.

… but it’s basically impossible to talk about this stuff without sounding like a lunatic, so let’s press on. I suppose that’s never stopped me before.

Hey, does anyone remember the tagline from the Majestic conspiracy game back in the day: “The Game Plays You”? Hold that thought.

You might have seen the argument from Adrian Hon recently, that the QAnon conspiracy theory is actually an ARG:

… and I knew I’d seen an argument that general shape before, but I couldn’t remember where; the “bottomless ARG” idea, I mean. It hit me earlier this week, shortly before the phrase “Alien DNA and Demon Sperm” became a part of this year’s pantheon of nonsensical headline nightmares: that was C.S. Lewis’ description of occultism, and the occult in general.

Lewis saw occultism as a sort of psychological snare, a set of endlessly self-referential symbols of symbols of symbols with no ultimate referent, a bottomless semiotic rathole for the overcurious inquirer designed to perpetually confuse and distract the mind. Beaudrillard, incidentally – creator of the term “hyperreal” – saw modern finance, and particularly advertising, in the same light – a set of self-referential symbols ultimately disconnected from reality, meaningful only in their own context, self-sustaining only to people trapped in that interlocking mesh.

Seeing through this lens makes the underpinnings of Facebook’s deep-seated resistance to admit the existence of, much less take responsibility for, much less do anything about, the running river of fake news, conspiracy theories and racist agitprop on that platform understandable: Facebook isn’t a social network: Facebook is an ARG Platform. It’s indiscriminate, unpoliced Alternate-Reality-As-A-Service.

“Whatever the rhythm was, luck rewarded us, because, wanting connections, we found connections — always, everywhere, and between everything. The world exploded in a whirling network of kinships, where everything pointed to everything else, everything explained everything else… “
– Umberto Eco, Foucault’s Pendulum

And with an audience already wound up in this unfiltered, overpopulated hyperreality-as-service, you barely need to do any work at all to kickstart the sort of amazing, self-sustaining paranoia-fulfillment engine that would have put the last few centuries’ foil-hatted quasi-mystic conspiriographists’ jaws right on the floor. All you need is enough people in rough proximity who feel frightened and powerless, a compelling seed crystal – the antivax fraud, the QAnon clownshow, a thousand others, it barely matters as long as it’s got a sharp hook – and this cancerous hyperculture machine pretty much bootstraps itself, making in-group celebrities out wannabe James Burkes pulling obscure facts together and drip-feeding the occasional five-like dopamine hit to the noobs explaining that you can’t spell “Rosicrucianist Aliens” without “Clintons”.

(For a while I was using that as a first-pass test for newsfeeds: if I replace “the Clintons” with “the Templars” and say this out loud… do I sound like a crank? I’ve never mentioned it, because I don’t need people who already sound like cranks emailing me to say “of course, it was right in front of us the whole time”, but we’re playing way past that now. But if I’ve accidentally added something to the collective lunatic lexicon – the lexographia lunacii, as it was first described in fifteen-forty-never because I just made that up – then I will seriously owe Chelsea an apology.)

Facebook’s ongoing negligence aside, what makes the Q-loons fascinating is that despite all its modern trappings, once that meme set its hooks into a vulnerable population (and psychological vulnerability is the name of the game, out there in the fever swamps) this wide-open extremely-2020 conspiracy-ARG is structurally nothing more a massively-multiplayer version of every vintage occult ceremony in history. I mean, the baseline aesthetic is trash, but still; it’s just a bunch of lunatic imagery, strange incantations and oddball ceremonials whose only reason to exist is to justify the time people have spent bringing it into existence.

“I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth.”
– Umberto Eco, Foucault’s Pendulum

So now thousands and thousands of people are participating, without realizing it, in a massively-distributed, collaborative occult ceremony, tying every scrap of fact and coincidence of the world together into this giant fractal-sefirot red-yarn serial-killer wall, drawing lines of imaginary digital salt from symbol to symbol to meaningless symbol, each utterly disconnected from anything more real than their own paranoid helplessness and fear.

Another way to say that is: QAnon is an occult conspiracy whose nefarious secret purpose is convincing themselves that an occult conspiracy actually exists.

It’s strangely beautiful in a way, until you understand what you’re seeing; Foucault’s Pendulum rewritten as a cryptofascist fever-swamp MMORPG. I love that book, and seeing this is like being offered the Maltese Falcon and handed a seagull drowned in crude.

“You see, Casaubon, even the Pendulum is a false prophet. You look at it, you think it’s the only fixed point in the cosmos. but if you detach it from the ceiling of the Conservatoire and hang it in a brothel, it works just the same. And there are other pendulums: there’s one in New York, in the UN building, there’s one in the science museum in San Francisco, and God knows how many others. Wherever you put it, Foucault’s Pendulum swings from a motionless point while the earth rotates beneath it. Every point of the universe is a fixed point: all you have to do is hang the Pendulum from it.”
– Umberto Eco, Foucault’s Pendulum

I’m not sure what to do with that information, sadly. If we’ve learned anything from the ongoing death throes of the 20th century, it’s that in an information dense and hyperconnected society, that robust commitments to social infrastructure – public health, public education, public journalism, social justice, social welfare and full employment – aren’t some sort of lefty, feel-good hippie political niceties; these are national security issues, and their failures expose an attack surface on participatory representative democracy. And while I don’t think Facebook profits from disinformation, they’re definitely complicit and definitely profiting from ignorance, powerlessness and helplessness. The disinformation, the conspiracy theories and racist agitprop, the antivax gongshow, Q and a thousand others festering alternate realities are just byproducts of that fear and desperation, parasites that have latched on to a vulnerable population from an accommodating platform happy to look the other way, wash their hands of the whole thing and let the machine grind away.

“I believe that you can reach the point where there is no longer any difference between developing the habit of pretending to believe and developing the habit of believing.
– Umberto Eco, Foucault’s Pendulum

I sometimes wonder what makes Facebook’s staff think the algorithms they’ve built, to give their users whatever keeps them clicking away uncritically, aren’t pointed back at them? Do they not wonder, or just not ask?

February 5, 2020

Misdirection

Filed under: arcade,documentation,interfaces,life,microfiction,toys,weird — mhoye @ 11:17 am

Karl Germain once said that “Magic is the only honest profession. A magician promises to deceive you and he does.”

This is sort of a review of a game, I guess. It’s called Superliminal.

“Every magic trick consists of three parts, or acts. The first part is called the pledge. The magician shows you something ordinary: a deck of cards, a bird, or a man. He shows you this object, and pledges to you its utter normality. Perhaps he asks you to inspect it to see that it is indeed real, unaltered, normal. But, of course, it probably isn’t. The second act is called the turn. The magician takes the ordinary something and makes it do something extraordinary. Now you’re looking for the secret. But you won’t find it, because of course you’re not really looking. You don’t really want to know. You want to be fooled. But you wouldn’t clap yet. Because making something disappear isn’t enough. You have to bring it back. That’s why every magic trick has a third act. The hardest part. The part we call the Prestige.”

— Cutter (Michael Caine), “The Prestige

You’ve probably heard David Foster Wallace’s speech to the graduates of Kenyon College in 2005, the “This Is Water” speech.

It is about the real value of a real education, which has almost nothing to do with knowledge, and everything to do with simple awareness; awareness of what is so real and essential, so hidden in plain sight all around us, all the time, that we have to keep reminding ourselves over and over: “This is water, this is water.”

It’s possibly the greatest College Graduation Speech of all time, both in its mastery of the form and the surgical precision of its own self-serving subversion of that same form. “This is a standard requirement of US commencement speeches, the deployment of didactic little parable-ish stories”, right after the parable-ish story. “I am not the wise old fish”, followed by an explanation of the whole point of the fish story. Over and over again, throughout, we’re shown the same sleight of hand:.

Tell your audiences that they’re too smart to want a certain thing and give it to them anyway. Remind everyone that they’re too hip for corny dad sermonizing and then double down on the corny dad sermonizing. This is a great way to write a commencement speech—not by avoiding platitudes, but by drawing an enchanted circle around yourself where the things we thought were platitudes can be revealed as dazzling truths. Where all of us can be consoled, if only for an instant, by the notion that the insight we lack has been here all along! Just hiding inside of our clichés.

I don’t think Harnette’s cynicism in that LitHub article, pointed at the pernicious consequences of Wallace’s “cult of sincerity” is the whole story. She’s not wrong, but there’s more: if you’ve got the right eyes to see it the outline of the Prestige is there, the empty space where the third act didn’t happen. The part where this long, drawn out paean, begging for sincerity and authenticity and “simple awareness” reveals itself for what it is, a cry for help from somebody whose inner monologue does not shut up or take its foot off the gas so much as a millimeter for anyone or any reason ever. A plea for a simplicity from somebody whose mind simply won’t, that nobody saw.

Because of course you’re not really looking. You don’t really want to know; you want to be fooled. I know that this stuff probably doesn’t sound fun and breezy or grandly inspirational the way a video game review is supposed to sound. But it’s just about capital-T Time to stop using this gag.


[ https://www.youtube.com/embed/30iHXafyXlw – Superliminal teaser trailer ]

I’ve played through Superliminal twice now, and I spent a lot of that time thinking about Wallace’s call for simple awareness as the game hammers on its tagline that perception is reality. I’ve got mixed feelings about it.

Superliminal opens in an obvious homage to both Portal and The Stanley Parable, guns on the mantle that never go off; in some ways it feels like the first Assassin’s Creed, an excellent tech demo that paved the way for the great AC2. It’s brilliant and frustrating, playing with the nature of constructed realities in ways that are sometimes trite, sometimes – the knife, the parking lot – unsettling and sometimes genuinely distressing. Like Portal it’s only a few hours long but they aren’t wasted hours, novel conceits and engaging mechanics flourishing through the iteration and conceptual degradation of the dreamscapes you traverse.

But I can’t shake the feeling like some part of the game is missing, that there’s a third act we haven’t been allowed to see.

As with Wallace’s Kenyon speech it’s the final conceit – in Superliminal, the psychologists’ summary – that ties the game together in a way that feels thematically complete, grandly inspirational and woefully unearned; where all of us can be empowered, if only for an instant, by the notion that the insight we lack has been here all along, if – perception being reality – we could only see it. And just like the Kenyon graduation speech, I can’t shake the sense that the same sleight-of-hand has happened: that what we’re not seeing, what we’re choosing not to see, is that this sincere inspirational anecdote isn’t really something meant to inspire us but something the author desperately wishes they could believe themselves, a rousing sermon from a preacher desperate to escape their own apostasy.

And how hard could that be, really? All you’ve got to do, after all, is wake up.

It’s a pretty good game. You should play it. I hope whoever made it gets the help they need.

December 26, 2019

Star Wars 1979

Filed under: academic,analog,awesome,beauty,books,documentation,flickr,weird — mhoye @ 4:01 pm

Star Wars 1979

This is from a children’s Star Wars book printed in 1979, called “The mystery of the rebellious robots”. The story is nothing – spoilers, but the answer is they cheaped out on aftermarket parts and got hacked by Jawas – but I’m going to have to scan the whole thing, because stripped of the story the art is inexplicably great. I’ll come back with the whole thing in a few days.

Intrasective Subversions

I often wonder where we’d be if Google had spent their don’t-be-evil honeymoon actually interviewing people for some sort moral or ethical framework instead of teaching a generation of new hires that the important questions are all about how many piano tuners play ping pong on the moon.

You might have seen the NYTimes article on hypertargeted product placement, one of those new magical ideas that look totally reasonable in an industry where CPU cycles are cheap and principles are expensive.

I just wanted to make sure we all understood that one extremely intentional byproduct of that will breathe new life into the old documnent-canary trick of tailoring sensitive text with unique punctuation or phrasing in particularly quotable passages to identify leakers, and has been purpose-built as a way to precision-target torrent seeders or anyone else who shares media. “We only showed this combination of in-product signal to this specific person, therefore they’re the guilty party” is where this is going, and that’s not an accident.

The remedy, of course, is going to be cooperation. Robust visual diffs, scene hashes and smart muting (be sure to refer to They Live for placeholder inspiration) will be more than enough to fuzz out discoverability for even a moderately-sized community. As it frequently is, the secret ingredient is smart people working together.

In any case, I’m sure that all right thinking people can agree that ads are the right place to put graffiti. So I’m looking forward to all the shows that are turned into hijacked art-project torrents the moment they’re released, and seeing

THEY LIVE
THEY LAUGH
THEY LOVE

in the background of the pirated romcoms of 2021.

December 17, 2019

Poor Craft

Filed under: future,interfaces,linux,microfiction,toys,want,weird,work — mhoye @ 1:53 pm

Ghosting

“It’s a poor craftsman that blames his tools” is an old line, and it took me a long time to understand it.

[ https://www.youtube.com/embed/ShEez0JkOF ]

A friend of mine sent me this talk. And while I want to like it a lot, it reminded me uncomfortably of Dabblers and Blowhards, the canon rebuttal to “Hackers And Painters”, an early entry in Paul Graham’s long-running oeuvre elaborating how special and magical it is to be just like Paul Graham.

It’s surprisingly hard to pin Paul Graham down on the nature of the special bond he thinks hobbyist programmers and painters share. In his essays he tends to flit from metaphor to metaphor like a butterfly, never pausing long enough to for a suspicious reader to catch up with his chloroform jar. […] You can safely replace “painters” in this response with “poets”, “composers”, “pastry chefs” or “auto mechanics” with no loss of meaning or insight. There’s nothing whatsoever distinctive about the analogy to painters, except that Paul Graham likes to paint, and would like to feel that his programming allows him a similar level of self-expression.

There’s an old story about Soundcloud (possibly Spotify? DDG tends to the literal these days and Google is just all chaff) that’s possibly apocryphal but too good not to turn into a metaphor, about how for a long time their offices were pindrop-quiet. About how during that rapid-growth phase they hired people in part for their love of and passion for music, and how that looked absolutely reasonable until they realized their people didn’t love music: they loved their music. Your music, obviously, sucks. So everyone there wears fantastic headphones, nobody actually talks to each other, and all you can hear is in their office is keyboard noise and the HVAC.

I frequently wonder if the people who love Lisp or Smalltalk fall into that same broad category: that they don’t “love Lisp” so much as they love their Lisp, the Howl’s Moving Memory Palaces they’ve built for themselves, tailored to the precise cut of their own idiosyncracies. That if you really dig in and ask them you’ll find that other people’s Lisp, obviously, sucks.

It seems like an easy trap to fall in to, but I suspect it means we collectively spend a lot of time genuflecting this magical yesteryear and its imagined perfect crystal tools when the fact of it is that we spend almost all of our time in other people’s code, not our own.

I feel similarly about Joel Spolsky’s notion of “leaky abstractions”; maybe those abstractions aren’t “leaking” or “failing”. Instead it’s that you’ve found the point where your goals, priorities or assumptions have diverged from those of the abstraction’s author, and that’s ultimately not a problem with the abstraction.

The more time I spend in front of a keyboard, the more I think my core skills here aren’t any more complicated than humility, empathy and patience; that if you understand its authors the code will reveal itself. I’ve mentioned before that programming is, a lot more than most people realize, inherently political. You’re making decisions about how to allocate scarce resources in ways that affect other people; there’s no other word for it. So when you’re building on other people’s code, you’re inevitably building on their assumptions and values as well, and if that’s true – that you spend most of your time as a programmer trying to work with other people’s values and decisions – then it’s guaranteed that it’s a lot more important to think about how to best spend that time, or optimize those tools and interactions, rather than championing tools that amount to applied reminiscence, a nostalgia with a grammar. In any other context we’d have a term for that, we’d recognize it for what it is, and it’s unflattering.

What does a programming language optimized for ease-of-collaboration or even ease-of-empathy look like, I wonder? What does that development environment do, and how many of our assumptions about best collaborative practices are just accidental emergent properties of the shortcomings of our tools? Maybe compiler pragmas up front as expressions of preferred optimizations, and therefore priorities? Culture-of-origin tags, demarking the shared assumptions of developers? “Reds and yellows are celebratory colors here, recompile with western sensibilities to swap your alert and default palettes with muted blues/greens.” Read, Eval, Print looping feels for all its usefulness like a huge missed opportunity, an evolutionary dead end that was just the best model we could come up with forty years ago, and maybe we’ve accidentally spent a lot of time looking backwards without realizing it.

October 19, 2019

Apparel

Filed under: awesome,business,toys,weird — mhoye @ 7:43 am

I made a thing and somebody said “I want that on a shirt”. If that was you, here’s your chance.

It’s a great game, incidentally.

August 26, 2019

Dada In Depth

Filed under: awesome,documentation,future,interfaces,microfiction,weird — mhoye @ 10:35 am

Memetic

June 29, 2019

Blitcha

Blit

April 10, 2019

Modern Problems, Etc.

Filed under: analog,awesome,future,interfaces,life,lunacy,weird — mhoye @ 10:51 am

genegraft

Older Posts »

Powered by WordPress