Blog

September 10,000, 1993

math (+1 to count the 1st)

So, checks out. 10,000 days of the September That Never Ended.

The world since is like a movie showing a few people coughing before the credits, wipe fade, zombie hordes tearing down barricades to eat the brains of the last few people. Someone's shivering in the corner with a gun, for the zombies or self, you can't tell. Freeze frame. "I bet you're asking how we got here…"

Note: I, uh, kinda infodumped here. Estimated reading time: 19 minutes.

What Went Wrong

At the time, I had a nice Gopherhole, finger and .plan (at times with a GIF of me uuencoded into it!), and was already annoyed by the overcomplicated World Wide Web rising. But in Feb 1993, UMinn saddled Gopher with threats of a license, which killed the better-organized system, and I was an adaptable guy. For quite a while I had both with equivalent content mirrored, but then my WWW site got more features, and the Gopher hole got stale so I closed it.

A bunch of new kids invaded USENET every September when school started, and commercial Internet started in '89-91 when NSFNet removed their commercial restrictions, and then fucking AOL unleashed bored neo-nazis from the flyover states on us. There was a vast onslaught of spam, bullshit, and trolls. So I switched from rn which had primitive killfile regexps ("PLONK is the sound of your name hitting the bottom of my killfile"), to trn, which had threading and a little better killfile system, to strn which had scoring so if you hit multiple good or bad keywords, you'd move up or down my queue or vanish. I bailed on all the big groups, tried moderation and was promptly attacked by scumbags who thought the moderation system was for protecting their corporate masters, not stopping spam, and then quit entirely.

We don't even have FAQs now. There's no netiquette at all (ha, Brittanica, remember them? Site's probably not been touched since 1999). I hide off to the edges in Mastodon with very aggressive blocking of anyone who looks annoying. The big media sites, Twaddler and Fuckbook, are just poison, an endless scroller of screaming between everyone who wants to feel offended all the time, and the Orange Shitgibbon's mob of traitors; I see a very little of Twaddler by way of RSS, but I won't go any closer than that.

Gabriel Dropout s1e2: Do you enjoy living like that, always being mad?

The Web. On most sites, there's megabytes of crappy scripts for tracking, style sheets, giant custom fonts instead of banners & buttons burned into GIFs, so a page might take 100MB to show anything. The basic World Wide Web experience of click a link, page shows you slightly formatted text on an unpleasant background, click another link, is unchanged from 1993, but there's a dumpster of shit on top of that. I hate using the Web now, every goddamned page wants to track me, bounce banners up in front of me, demand I approve cookies but don't let me say "DENY ALL FUCK YOU"; and even without cookies, they use fingerprinting to track me.

It doesn't have to be like this. Despite using WordPress, the dumbest and most bloated thing possible, I've tried to keep my site down to a minimal setup, go read the page source, it's just CSS, content, and the search widget. If I ever get around to purging the default CSS, it'll be even lighter. But most people not only don't live up to that ethic, they aggressively want the opposite, the biggest, fattest, most unusable crap site full of autoplaying videos they can make.

Criminals being able to use the Internet to attack physical infrastructure, or hostile encryption of computers (including in hospitals; some people need a stern talking to with a 2x4 or a shotgun). Back in the day, RTFM's worm was a novel disaster, but fixable. Microsoft's garbage OS was trivially infected with viruses then and now, but back then it didn't matter much; you might lose a few un-backed-up files, not real money.

The Internet as trivial research device seems like it should be good, but what it's meant is that the Kids Today™ don't bother to learn anything, they just look up and recite Wikipedia, which is at least 50-80% lies. They "program" by searching StackUnderflow for something that looks like their problem, pasting it in, then searching again to solve the error messages. Most of them could be replaced with a Perl script and wget. I assume non-programming fields are similarly "solve it by searching", which is why infrastructure, medicine, and high-speed pizza delivery are so far inferior to 28 years ago.

Search was very slow and mostly manually-entered into index sites back in the '90s. Now it's very fast, but only things linked from corporate shitholes actually show up, and spam and SEO poison all the results, so all you really get is Wikipedia, which might have a few manually-entered links at the bottom which might still exist or be in archive.org, or a few links to spam. Try searching for anything, it's all crap.

Vernor Vinge in 1992's A Fire Upon the Deep called a 50,000-years-from-now version of USENET "The Net of a Million Lies". Just a bit of an overshoot on the date, and a massive underestimate of the number of lies.

There's a lot of knock-on effects from the Internet as a sales mechanism. Like, videogames used to get QA tested until they mostly worked; fiascos like Superman64 were rare. Now, Cyberpunk2077 ships broken because they can patch it off the Internet, won't be fixed until actual 2077. Sure, not all games. I'm usually satisfied with Nintendo's QA, though even Animal Crossing: New Horizons shipped with less functionality and more bugs than Wild World on the (no patches!) DS cartridge.

What Is Exactly the Same

IRC, war never changes. I used ICB for my social group back then, and we moved from there to Slack. Most technical crap is discussed on IRC, rarely on Slack, Matrix, or Discord (which literally means conflict). Doesn't matter, it's just a series of text messages, because nobody's figured out how to make anything better that lasts.

I'm still using some version of UNIX. If you'd told me in 1993 that I'd be a Mac guy, I'd've opened your skull to see what bugs had infested your brain; Macs were only good for Photoshop and Kai's Power Tools. But Linux never got better, BSD is functional but never got a great desktop, SUN and SGI are dead <loud sustained keening wail>, and Apple bought/reverse-takeovered NeXT with a nice enough BSD-on-Mach UNIX. And the Internet is, largely, UNIX. There was a horrible decade mid-90s to early-00s when Windows servers were gaining ground, people were ripping out perfectly good UNIX data centers to install garbage at a huge loss in efficiency because their CTOs got bribed millions by Microsoft. But that tide washed up and back out taking most of the MS pollution with it. Maybe it won't be back.

I still write web sites in Vim or BBEdit (since 1993: It Doesn't Suck™). Well, I say that, but I'm writing this mostly in the WordPress old text editor, using Markdown. Markdown's new-ish (2004), but behaves like every other text markup system going back to SGML in the '80s and ROFF in the '70s.

What's Good About the Internet

Not fucking much.

Streaming or borrowing digital copies of music, movies, and books is easier than ever. I speak mainly of archive.org, but sure, there's less-legal sites, too. I have access to an infinite library, of whatever esoteric interest I have; I've lately been flipping through old Kilobaud Magazine as part of my retrocomputing; I like the past where just getting or using a computer was hard and amazing. In 1993 those might have been mouldering away in a library basement, if they could be found at all. Admittedly, I hate most new media; nothing's been good enough for Mark since 1999, and really I could put the line at grunge, or maybe 1986 when The Police broke up. But at least it is accessible.

I spent most of today writing new stuff for the Mystic Dungeon, and even with all the overcomplicated web shit, it's a little easier to build a secure, massively parallel message system in JS than it was in C or Perl 30 years earlier. Not by much, but some.

Internet pornography (link barely NSFW?) is a tough one. '70s-80s VHS porn was expensive, flickery, way too mainstream; fine if you liked chunky old guys banging ugly strippers, I did not. DVD porn in the '90s was still expensive, but got much better production, and every niche interest, that was the golden age. But now everything is "free" on the thing-hubs and x-things, but only in crappy 6-minute excerpts stolen from DVD, horrible webcam streams, and the creepifyin' rise of incest porn. Because the Internet enables weird interests, but what if a whole generation have massive mommy/daddy issues? You can in fact pay for good non-incest porn, but payment processors and credit cards make it hard to do, so it's easier to just watch garbage. And then there's prudes and religious zealots who think porn is bad; in the old days, they had the law and molotov cocktails on their side, but now they're impotent, so I guess that's barely a win for the Internet.

What Didn't We Get

The Metaverse. OK, there was and is Second Life, but Linden fucked the economy up, and never made it possible to take your grid and host it yourself without a gigantic effort. There's WebVR and a few others, but they have terrible or no avatars, construction, and scripting tools. We should be able to be scanned and be in there, man, like in TRON.

The Forum. There's no place of polite social discourse. There's hellsites, and some sorta private clubs, and a bunch of abandoned warehouses where people are chopped up for body parts/ad tracking. Despite my loathing of Google, who are clearly trying to implement SkyNet & Terminators and exterminate Humanity, Google+ was OK, so of course they shut it down.

The Coming Golden Age of Free Software That Doesn't Suck. Turns out, almost everyone in "FLOSS", the FSF, and GNU, are some of the shittiest people on Earth, and those who aren't are chased out for daring to ask for basic codes of conduct and democracy. Hey you know that really good file system? Yeah, the author murdered his wife, and the "community" is incompetent to finish the work, so keep using ext which eats your files. Sound drivers on Linux, 16 years after I ragequit because I couldn't play music and alarm sounds at the same time, still don't work. "Given enough eyes, everyone goes off to write their own implementation instead of fixing bugs"; nothing works, every project just restarts at +1 version every 2-5 years. Sure, you can blame capitalism, but there's a couple of communist countries left, why aren't they making infinitely better software without the noose of the dollar dollar around their necks?

The Grand Awakening of Humanity. This was always delusional, but the idea that increased communication between people of Earth would end war, everyone would come together, align their chakras/contact the UFOs, and solve all our problems. Ha, no, you put 3 people in a chat room and you'll have 5 factions and at least one dead body in a week. As we approach 7 billion people online, many with explosively incompatible and unfriendly views, this is only going to get worse, if that's even imaginable.

Final Rating: The Internet

★★½☆☆ — I keep watching this shitshow, but it's no damn good. Log off and save yourself.

Désenchantée Friday Music

3d6 Six Times in Order

I was looking at my Gamma World 1E and GW1 Legion of Gold reprints from drivethrurpg — the first RPG I ever ran, and my one true love system, tho my old copy was destroyed by flooding decades ago — and discovered that even in 1978, the rot had set in, tho I ignored it then and now.

I speak, of course, of "more generous" systems for generating stats.

Character personae are created at the beginning of the campaign, endowed with certain basic attributes through the roll of dice. First, each player must choose to play either Pure Strain Human, humanoid, or mutated animal-type characters (the advantages and disadvantages of each of these three categories will be explained momentarily). Having selected the type of character he wishes to play, the player then rolls three six-sided dice to determine the relative strengths of each of his character's six basic attributes: mental strength, intelligence, dexterity, charisma, constitution, and physical strength. As a general rule, a roll of 3-8 for a given attribute indicates a weak trait, 9-12 is average, and 13-18 is above average. The relative strengths of certain attributes can (and most likely will) change during the course of the campaign, due to mutation, acquired experience, or some other method devised by the referee.

It is desirable that few, if any, of a player character's basic attributes be below average. Player characters represent an elite with the desire, the initiative, and the ability to venture outside the boundaries of the village, town, or tribal lands. They are the pioneers, explorers, and tamers of the vast wilderness. It is they who will eventually bring order to the chaos of GAMMA WORLD and an end to the Black Years. To increase the player's chances of rolling up an exceptional character, the referee will find it advisable to use the following method: for each basic attribute, the player rolls four dice (4d6) but totals only the highest three. If, for example, the player rolled 4, 3, 5, 1 on the four dice, he would add together 4+3+5=12 and leave out the 1. If he rolled 4, 3, 2, 2 he would add 4+3+2=9 and leave out the second 2. While it is still possible to roll very low numbers (3, 2, 2, 1), the player's chances of rolling an average to above average character are greatly increased.
—Gamma World (1978), James M. Ward and Gary Jaquet

But just 2 years earlier in Metamorphosis Alpha, no such mercies are given:

A human player will roll 3 six-sided dice several times for the abilities he or she has at the start of the game. Each player has the following abilities: radiation resistance, mental resistance, dexterity, constitution, strength, and leadership potential.
—Metamorphosis Alpha (1976), James M. Ward

So I strongly suspect the 4d6 keep 3 paragraph was added by Jaquet to fit with Gary Gygax's AD&D stat inflation. The shift from every other part of GW being "grubby scavengers trying not to die" to this Manifest Destiny "heroes of the Black Years!" bullshit is also stinky. We love chaos! We hate order! Down with civilization! You don't play Gamma World to be a farmer and accountant, you do it to be a weird mutant viking beaver with a laser pistol and a STOP sign shield!

Original Dungeons & Dragons ("little brown books") and Holmes' D&D Basic Set ("blue book") are strict 3d6-in-order, with the possibility of moving points 2:1 to a class's prime stat, which often resulted in lopsided but more specialized characters. Moldvay's B/X ("red book") is 3d6-in-order.

AD&D has the following four increasingly ludicrous methods:

Method I:
All scores are recorded and arranged in the order the player desires. 4d6 are rolled, and the lowest die (or one of the lower) is discarded.
Method II:
All scores are recorded and arranged as in Method I. 3d6 are rolled 12 times and the highest 6 scores are retained.
Method III:
Scores rolled are according to each ability category, in order, STRENGTH, INTELLIGENCE, WISDOM, DEXTERITY, CONSTITUTION, CHARISMA. 3d6 are rolled 6 times for each ability, and the highest score in each category is retained for that category.
Method IV:
3d6 are rolled sufficient times to generate the 6 ability scores, in order, for 12 characters, The player then selects the single set of scores which he or she finds most desirable and these scores are noted on the character record sheet.

I'm tempted to write a little simulation script to see just how insane those stats are; it should basically be impossible to have anything under a 13 out of 18 with Methods II and III. I almost don't hate Method IV, I've allowed that with just 1-3 alternates instead of 12. Method I is what D&D 5E uses.

Tunnels & Trolls also from 1975, was 3d6 six times in order, though later editions added "triples add and roll over" (TARO) for superheroic characters, and non-Humans multiply various stats by anything from 0.25 to 2.0; but since T&T characters increase their stats as they level, that was just a head start, not unbalance.

The appeal of those early games was a normal, maybe a little better than average schlub, working their way up by way of good stats, player intelligence & skill, luck, hard work grinding out experience, cowardice, and ruthless treachery, until they were slightly less likely to explode in a blood geyser at the first papercut. If you made it to 3rd level, you were good, and extremely attached to your character. If you made it to 9th, you quit because you had won, and it was time to start over with one of your henchmen.

If you can just get another guy from the vending machine with high stats, who cares if you die? You'll come right back. Not that you can actually die in 5E, it's basically Toon with swords.

There is an argument that old-school games didn't give high bonuses to stats, which is true… but we did make a lot of stat rolls, long before such things were official. The Perrin Conventions (see Dexterity Roll) and RuneQuest formalized what a lot of us had always done: Roll stat x 5% on percentile, or d20 or 3d6 roll under. The guy who taught me used 3d6 for average, 2d6 easy, 4d6 hard, roll under your stat; I don't recall if all 6's were always a failure, but that's how I used it.

Oh, you know I've posted about this, but not the specific mechanics, a couple years ago on my Mark Rolls Dice blog

Textfiles

Looking for VT100 documentation, I found a folder of textfiles VT100 animations, including the classic Bambi vs. Godzilla.

Slightly difficult to watch on any modern computer, so save this script: (works on Mac & other Unix-likes, wtf knows what Windows does for clear and reset.)

Use: % slowblade.py ~/Downloads/bambi_godzila.txt 500

slowblade.py: [update 2022-04-18, stdin for "-"]

#!/usr/bin/env python3

import os, sys, time

def slowblade(f, spd):
    try:
        os.system("clear")
        if f == "-":
            text = sys.stdin.read()
        else:
            text = open(f, encoding='Windows-1252').read()
        for c in text:
            sys.stdout.write(c); sys.stdout.flush()
            time.sleep(1.0/spd)
        print("")
    except (IOError, EOFError):
        pass
    finally:
        os.system("sleep 10; reset")

if __name__ == "__main__":
    if len(sys.argv) == 1: raise Exception("Usage: slowblade.py FILENAME [SPEED (default 100)]")
    else: slowblade(sys.argv[1], int(sys.argv[2]) if len(sys.argv) >= 3 else 100)

What I'm Watching: Warrior

On Hobomax. Based, allegedly, on notes by Bruce Lee in the '70s, it's a kung fu series in 1876 SF Chinatown. Produced by Jason Lin of 2Fast2Furious2Legit2Quit, and Bruce Lee's daughter.

Right from the start, there's a nice mix of actual kung fu halfway between Bruce Lee's actual beat-em-ups and physical comedy like Jackie Chan's fights (not just shitty jump-cut editing), politics within the tongs, brothel girls, nativist mobs of assholes, and the severely underfunded, corrupt, thug-like SFPD (so nothing changes in 150 years) starting a Chinatown squad (including a Georgian Confederate traitor, leading to some bad blood).

It's a little weird casting, Ah Sahm (half-Japanese/English Andrew Koji) doesn't at all pass for Chinese, especially when standing next to Young Jun (Hong Konger Jason Tobin) or Ah Toy (Olivia Cheng), but he's a fine fighter, a competent actor.

The dialogue is modernized, even more than in Deadwood, there's more profanity and just flippant speech that doesn't fit a Chinese man who supposedly trained with a sifu. They use the linguistic trick of speaking a few words in Cantonese (apparently all phonetic memorization except the whore) and then switching to modern English… and then back to stilted English or Cantonese if there's whites around. They have weird alternatives to "white" and "han" or whatever ethnic group they're pointing at, calling them "ducks" and "onions", much like The Wire replaced the N-word with "bitch" most of the time. "Itchy" means looking for a fight.

I'm not especially interested in the segments about the SFPD, and even less about the nativists, but that may change as the show goes on.

At times they also slip in modern music cues and other anachronisms, but it's largely trying to be a period piece.

Every fight isn't amazing, but they're all good. I've seen none that are as pathetic as any superhero trash.

Watch this show.

★★★★½

Final Hours of the Apocalypse Thursday Music

Animal Crossing is in its final hours of 2020… Oh, reality is, too? Ick.

(DJSundog did a '90s set, which is nice, this is my hardest cut)


OH NO they took off his head!


I. AIN'T. GRUMPY.


Whitney is delusional.


We all cry about it, Isabelle.

Prog Rock 2020 Away Sunday Music

Been a while since I did a playlist. Too much modern vaporwave still clogging my todo folder, so let's stay back in the '60s-'70s (with a couple later conclusions).

Informational Hygiene Directives

That's what I call my rules around contacting me, and getting a (non-vulgar) reply from me.

This is brought to mind by Wednesday's spam mail reaching my contact address, and why that made me so mad.

  • Casual, "hey what about" messages: Social media, currently @mdhughes@appdot.net — if this changes, it'll be in the About page. I don't always respond, if I do it's within 24 hours but rarely immediate, but I'll probably see it. I may or may not care, this is very low attention span, I may be drunk and posting about Dracula or Godzilla, it's not you, it's me.
  • Do not: IRC messaging, Discord messaging, etc. unless I'm specifically engaged in that activity at that moment, I won't see it, won't care.
  • Sorta: WordPress post replies (and replies from micro.blog) I will only see next time I load my WP dashboard; I use StupidComments.css to hide them on my front page, which I rarely visit anyway. I do appreciate post replies, I'd hit little favstars by them if I could, but they're not allowed to be intrusive.
  • Junk mail, Mailing lists: I have an email address for that on a popular and possibly hostile AI service, I manage junk there, messages to me are unlikely to get thru. This address generates no notifications.
  • Professional email: Only mission-critical services and people who have business to do with me should be using this address. This address does generate notifications.
  • Private email, iMessage, SMS, Slack: You probably don't have this. Unless you're one of a half-dozen people, and if someone else finds it I tell them the correct junk/professional address to use and block them. This gets notifications. The one time I let one of these slip while I was working, tragedy ensued, so I won't do that again.

When I was all business business business numbers, I got at most a couple dozen emails a day on my professional box, from direct reports, management, and interested outside teams, and I hated it, but that was manageable. Since I got The Man's boot off my neck, it's much lower, but I like barriers and being able to utterly ignore stuff outside one box if I feel like it.

Which brings me to today's hilarious idea of email sabbaticals. There's more recent people doing the same, it's not just this one Microsoftie 10 years ago, but I'll address the original.

What is wrong with you? Thousands of emails in 2 weeks (hundreds a day)? Everything you're doing there is wrong. Everyone sending you stuff is playing "my problem is your problem", and it is NOT.

Organize, filter, and delegate.

  • Organize: Use message boxes to put away automated or group content you don't need to pay attention to now. You can read that when you have spare time, or not, because it's not directly affecting you.
  • Filter: Don't let people throw everything into your "must read now" box. Block the people who can't learn.
  • Delegate: If you do have a firehose of stuff coming in, you probably can afford to hire someone to read it all and just send the useful parts to you. If you're running an open source project, you're kind of screwed, but there may be volunteers (or you can "voluntell" some overly enthusiastic but less useful contributor). You can also set up a wiki or forum for the Kilkenny Cats solution.

Walt Mossberg had this ridiculous screed about getting hundreds of emails and too many notifications… Now, he's a (now-retired) journalist who does get a lot of legitimate "my problem is your problem" email. But he also complains about birthday notices, CVS pharmacy ads, Starbucks ads… Turn all that shit off! Nobody needs any of that crap.

"A text, or short internet message, on the other hand, seems to demand instant attention, and may even lead to a whole thread of conversation."

No, it does not. Mute, delete, block anyone who can't learn. If people persist in sending you junk, you can't let them have access to a ringing bell.

Junk Mail from WordPress dot com

In a move almost surgically designed to piss me off, Automattic[sic] sent me junk mail "Claim your Ultimate Traffic Guide". Which after you click thru, tells you "Save $100! Only $17!" for a pamphlet of SEO marketing poison.

Every single thing in there is evil. Sending junk mail to my service addresses for blogs; I've gone thru and maybe got all their "send me spam" switches turned off again, but they'll just add more "send me NuSpam®" switches in 6 months.

The click-thru validates that they reached your account; which they already had that information in web bugs for most people (me included since I was on mobile, where I'm less secure).

Charging whatever you want for a book is fine. Claiming it had some SUPER value of +$100 as a discount is straight out of late-nite infomercials of the '90s. "Offer not available in stores! It chops, dices, it makes julienne spam!"

And we all know what's in that crap, immoral activities like paying Google and Facebook for ads. If you give Google money, you are financing Judgement Day. If you give Facebook money, you are financing American Nazis.

Scumbags can't even honestly label their spam and scam.

Anyway, just a heads up.

(I am aware there's other blog engines. Some are even not written in PHP, which is an automated virus loader. Some don't have a shitty company backing them. And yet, that choice is already made, and at least it's on my least favorite free license so I could cut the cord entirely. But I'll make sure Automattic[sic] gets no money from me.)