A Computer is Like a Violin

LATITUDE OF EXPRESSION AND SPECIFICITY OF IDEAS

Finally we come to the question of what to do when we want to write a program but our idea of what is to be done, or how to do it, is incompletely specified. The non sequitur that put everyone off about this problem is very simple:

Major Premise: If I write a program it will do something particular, for every program does something definite.
Minor Premise: My idea is vague. I don’t have any particular result in mind.
Conclusion: Ergo, the program won’t do what I want.

So, everyone thinks, programs aren’t expressive of vague ideas.

There are really two fallacies. First, it isn’t enough to say that one doesn’t have a particular result in mind. Instead, one has an (ill-defined) range of acceptable performances, and would be delighted if the machine’s performance lies in the range. The wider the range, then, the wider is one’s latitude in specifying the program. This isn’t necessarily nullified, even when one writes down particular words or instructions, for one is still free to regard that program as an instance. In this sense, one could consider a particular written-down story as an instance of the concept that still may remain indefinite in the author’s mind.
This may sound like an evasion, and in part it is. The second fallacy turns around the assertion that I have to write down a particular process. In each domain of uncertainty 1 am at liberty to specify (instead of particular procedures) procedure-generators, selection rules, courts of advice concerning choices, etc. So the behavior can have wide ranges-it need never twice follow the same lines, it can be made to cover roughly the same latitude of tolerance that lies in the author’s mind.

At this point there might be a final objection: does it lie exactly over this range? Remember, I’m not saying that programming is an easy way to express poorly defined ideas! To take advantage of the unsurpassed flexibility of this medium requires tremendous skill-technical, intellectual, and esthetic. To constrain the behavior of a program precisely to a range may be very hard, just as a writer will need some skill to express just a certain degree of ambiguity. A computer is like a violin. You can imagine a novice trying first a phonograph and then a violin. The latter, he says, sounds terrible. That is the argument we have heard from our humanists and most of our computer scientists. Computer programs are good, they say, for particular purposes, but they aren’t flexible. Neither is a violin, or a typewriter, until you learn how to use it.

If the Benefits of Software are So Great…

“When we start cataloging the gains in tools sitting on a computer, the benefits of software are amazing. But, if the benefits of software are so great, why do we worry about making it easier—don’t the ends pay for the means? We worry because making such software is extraordinarily hard and almost no one can do it—the detail is exhausting, the creativity required is extreme, the hours of failure upon failure requiring patience and persistence would tax anyone claiming to be sane. Yet we require that people with such characteristics be found and employed and employed cheaply.”
—Richard P. Gabriel, Patterns of Software

End of 2018

Let’s watch Poseidon — Only available on Netflix until tomorrow! Normally I watch Strange Days, but I feel an upside-down sinking ship is a more accurate metaphor for the year than failed love and revolution and pretty Angela Bassett. Maybe for Chinese New Year (Feb 5), Gabriel Dropout‘s New Year/armageddon episodes.

I don’t go super intimate online, but it’s been a rough year. I’ve lost a friend and two of my last few relatives to cancer, my dad’s had some close calls, and his dog died. Doing any kind of work under the stress load is… not great. And I’m not a good friend or coworker in this state. My new puppy is a terror, both looks and behavior like a jackal puppy, but the one really good thing.

State of software I touched on yesterday. This is the year a new Perilar rises from the ashes, and Learn2JS is moving along nicely, I think that’s going to be a big deal, it’s a sweet environment.

I goofed off yesterday and started writing tbasic, a Tiny BASIC interpreter in C, because that’s a useful thing to do! I’ve done this before, but made a messy parser. The new one is a tiny single file and much cleaner. Might be published tomorrow morning sometime. While nobody needs BASIC, it’s good C programming exercise, and I can link in SDL2 and give it cross-platform graphics and sound, which is actually kinda neat.

“It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”
—Edsger W. Dijkstra, EWD 498: How do we tell truths that might hurt?
[mdh: In case you can’t read the paper and get the joke, he’s joking. Sort of.]

I got a little writing in on Delvers in Darkness, I’m thinking about more adventures for it, solo gamebooks and Refereed.

Poseidon is really terrible already. Everyone’s a ridiculous caricature. Oh, this is gonna be a good shipwreck.

Sword and Sorcery

“I was actually tired of sword-and-sorcery as the genre then existed. I admired the work of C.L. Moore, Leigh Brackett, and Fritz Leiber and continued to respect the vitality and invention of Howard, but I had little time for the likes of Tolkien and Lewis, whom I regarded as bad popular children’s writers whose moral attitudes were highly questionable and whose particular syntheses had none of William Morris’ vision, Howard’s manic originality, or Leiber’s sophisticated flair. I was, I suppose, bored with the form itself. So when Carnell commissioned the first Elric story I decided I would try to do something as different as possible from everything which then existed.”
—Michael Moorcock, introduction to “Tales of the White Wolf”

Programming is a Joy

“Programming is a joy. That’s why people do it. No one should spend hours in front of a computer terminal out of some dreary sense of duty, or because they have some vague notion of becoming “computer literate”. That’s not the point. Programming ought to be fun—and if you’re not having fun, you shouldn’t waste your time.”
—Michael Eisenberg, “Programming in Scheme” (1988)

Software Tools Quote

“Finally, it is a pleasure to acknowledge our debt to the Unix operating system, developed at Bell Labs by Ken Thompson and Dennis Ritchie. We wrote the text, tested the programs, and typeset the manuscript, all within Unix. Many of the tools we describe are based on Unix models. Most important, the ideas and philosophy are based on our experience as Unix users. Of all the operating systems we have used, Unix is the only one that has been a positive help in getting a job done instead of an obstacle to be overcome. The world-wide acceptance of Unix indicates that we are not the only ones who feel this way.”
“Software Tools in Pascal”, 1981, by Brian W. Kernighan, P.J. Plauger

As every neckbearded n-gate reader will now rush to well-actually at me, BWK’s experience writing this book led to Why Pascal Is Not My Favorite Programming Language, but note this rant is about “standard” ANSI Pascal, not the somewhat improved P-Code Pascal of the ’70s or the free-wheeling super-powered Turbo Pascal of the early ’80s, and nothing like modern FreePascal. Standard Pascal was a deliberately simplified pedagogical language, not a systems programming language, which the later ones are.

Anyway, the book’s interesting as a problem-solving exercise, but the Unix part amused me. And no, Linux is Not Unix. Buy a Mac or install BSD if you want UNIX®.

Don’t Be a Dick

So, Wil Wheaton ( previously “I Hate Twitter” ) was just chased off the Fediverse (he still has an account on a siloed non-federating instance, which isn’t really useful to anyone else). His last statement’s pretty clear, so I put that down below.

“Please do your very best to be kind to each other. The world is a terrible place right now, and that’s largely because it is what we make it.”

I know some of the people doing the harassing. There’s no point in even arguing with them: They’ve decided he’s in Two Minutes Hate, perhaps because he has a friend whom they don’t like, and won’t consider “Don’t be a Dick”, or having empathy, tolerance, or self-awareness that some of them aren’t such great friends to have, for one hot second.

While Gargron has condemned harassment, it doesn’t fix the problem, since there are entire instances where 4chan-like behavior is accepted; all you can do is block accounts or those entire instances, and it still poisons the Federated timeline for a while.

I’m not sure any level of moderation fixes this shit.

This is why I highly recommend owning your own blog, and broadcasting that out to other services where people can read it; even better, read this and many other blogs in your RSS aggregator or RSS reader ( currently free! ) of choice. It’s OK to put some ephemeral chat on other services, but remember those are owned by other people, and are easily attacked by angry, stupid mobs. If a stupid mob shows up here, I don’t approve their comments and it’s done. It’s the Castle Doctrine of online posting.

Wil Wheaton @wilw August 29, 2018, 3:02 PM https://mastodon.cloud/@wilw/100635779449174251 (will be a dead link soon)
I have been notified by an Admin here that they are getting 60 reports a day about my account. As far as I can tell, I’m not breaking any rules, and I’ve done my best to be a good person here. But this admin is going to suspend my account.

It’s the Admin’s instance, so I fully support their choice to eliminate a source of frustration, but something to consider: a person who is doing nothing wrong can be run off one instance by a mob from another instance. That seems … not cool. 1/x

But it’s been made very, very clear to me that I am not welcome in the Fediverse, and I hear you. I hoped to find an alternative to the birdsite where I could find the same fun community that existed over there in the beginning, and it’s clear to me that I won’t be finding that. Before I leave, I want to just make something very clear, because I’ve spent most of my life being yelled at by people who don’t know me at all, and I want the record to be clear. 2/x

During GamerGate, I was dogpiled and mobbed and brigaded and attacked by thousands of accounts. I started using a blocklist that was supposed to help stop that. I did not know that the blocklist I signed up for also had a lot of trans women on it. When I found out, I did everything I could to remove those women from the list I shared. When there were still innocents on the list, I stopped sharing the list entirely. Despite this, a mob has decided that I’m anti-trans. 3/x

This lie that I am anti-trans, or anti-LGBQ, is deeply hurtful to me (I know it’s nothing like the pain LGBTQ people deal with every day, as they simply try to exist in a world that treats them so badly, but it is still hurtful in its own way to me). I just want to make it extremely clear: that is a lie, and the people spreading it are misinformed.

So I’m leaving the Fediverse, which has treated me with more cruelty, vitriol, hatred, and contempt than than anyone on the birdsite ever did. 4/x

I know that I’m well-off, well-known, and as a CIS white hetro dude in America, I live life on the lowest difficulty setting. I know that I have very little to complain about.

But I still have feelings, and I really do care about the world and the people in it. What I see is a lot of anger and cruelty directed at the IDEA of me, from people who I just hope don’t realize that it really does hurt me, in my heart, to be accused of being someone I am not, and to be the target of a hateful mob. 5/x

Anyway, take your victory lap and collect your prizes. You’ve made it clear that I’m not welcome here, and even though I disagree with the action this Admin is taking (banning me when I didn’t break any rules doesn’t seem right), I respect and support the Admin’s decision to run their instance the way they see fit.

Please do your very best to be kind to each other. The world is a terrible place right now, and that’s largely because it is what we make it.

Bye.

6/end

Talking on the Internet

Or—more likely—a wide variety of nasty computer viruses. If Hiro reaches out and takes the hypercard, then the data it represents will be transferred from this guy’s system into Hiro’s computer. Hiro, naturally, wouldn’t touch it under any circumstances, any more than you would take a free syringe from a stranger in Times Square and jab it into your neck.
And it doesn’t make sense anyway. “That’s a hypercard. I thought you said Snow Crash was a drug,” Hiro says, now totally nonplussed.
“It is,” the guy says. “Try it.”
“Does it fuck up your brain?” Hiro says. “Or your computer?”
“Both. Neither. What’s the difference?”
Hiro finally realizes that he has just wasted sixty seconds of his life having a meaningless conversation with a paranoid schizophrenic. He turns around and goes into The Black Sun.
—Neal Stephenson, Snow Crash, ch. 5

Not always, but sometimes.

“I Really Hate Twitter”

“I really hate Twitter. It was once promising, and I feel like it still does some good, but on balance, it enables harassment and evil and cruelty at least as much if not more than it helps things change for the better. I feel like it has broken our society, and wrecked our social contract. I feel like the board at Twitter, and its CEO, Jack Dorsey, know this, but they’re too busy profiting from their inaction to care. May history judge them all the way they deserve.”
Wil Wheaton

Yeah. Long dull biographical anecdote aside, his point about Twitter is dead on. I’ve “only” got a couple thousand people I like there, not Wil’s millions, but it bugs me that anyone stays.

I feel like they’re stuck in some Soviet gulag and I’m betraying them by not staying in the gulag with them, but that’s fucking insane. They should be happy I got out, and I should be setting up fake passports and apartments in the Free World for them.

If you need help getting out, read my Post-Facebook Microblogging post, and email me if you need more help.

Do Something Weird

“This is the kind of possibility that the pointy-haired boss doesn’t even want to think about. And so most of them don’t. Because, you know, when it comes down to it, the pointy-haired boss doesn’t mind if his company gets their ass kicked, so long as no one can prove it’s his fault. The safest plan for him personally is to stick close to the center of the herd.

Within large organizations, the phrase used to describe this approach is “industry best practice.” Its purpose is to shield the pointy-haired boss from responsibility: if he chooses something that is “industry best practice,” and the company loses, he can’t be blamed. He didn’t choose, the industry did.

I believe this term was originally used to describe accounting methods and so on. What it means, roughly, is don’t do anything weird. And in accounting that’s probably a good idea. The terms “cutting-edge” and “accounting” do not sound good together. But when you import this criterion into decisions about technology, you start to get the wrong answers.

Technology often should be cutting-edge. In programming languages, as Erann Gat has pointed out, what “industry best practice” actually gets you is not the best, but merely the average. When a decision causes you to develop software at a fraction of the rate of more aggressive competitors, “best practice” is a misnomer.”
—Paul Graham, Revenge of the Nerds