Videogames and Storytelling Mix like Water and Sodium

At best you get tears & corrosive salt water, at worst you get a sodium explosion.

My philosophy of games:

  1. Games are about environment and gameplay only.
  2. Graphics don't matter much, as long as they communicate.
  3. Character and story are what you bring to it, they should not be part of the game.

So, I just dropped a lot of words there with fuzzy definitions:

  • Games: I mean all of tabletop boardgames, role-playing games, and most often videogames of all genres. There's less difference between the Warlock of Firetop Mountain gamebook and Myst than there is between that gamebook and David Foster Wallace's Infinite Jest. And if you tear out the system from Warlock, you get Advanced Fighting Fantasy or Troika!, which is a very nice little RPG for wandering a weird, almost hallucinatory fantasy world with no book, no defined character, no story.

  • Environment: The world you explore. Some of this uses traditional writing skills for designing non-player characters and describing the tone and events, but also architecture, painting, 3D modelling for designing environments, music for writing soundtracks, foley for making environmental sounds.

    I recently enough mentioned this in Videogame Exploration, and I want to especially repeat my suggestion of Bernband, which is goofy, low-rez, standee sprites… and one of the most immersive environments I've ever played in.

  • Gameplay: The continuous loop of doing something, getting feedback on what happened, maybe scores or your position or just your understanding of the environment changes, and then repeat forever. That loop might take milliseconds in action games, to minutes or hours in hard adventures. There's a… fixation? a high… you get from that loop when it works right. "Just one more turn" says the Civilization junkie at 4AM before blowing off work. "Just one more mineshaft" says the Minecraft player. "Just one more quest" says the ESO player.

  • Graphics: This is almost irrelevant, really, despite the huge amount of effort and money spent on it. It doesn't matter if it's text adventures like Colossal Cave Adventure or Infocom's games, character-grids like Rogue and many descendants, 2D or 3D tiled graphical environments like Ultima IV, Super Mario Bros, or Castlevania, painted images along with text like Sierra's King's Quest or the LucasArts SCUMM games, up to 3D FPS graphics like Doom or Elder Scrolls Online. Good gameplay with any graphics is immersive, bad gameplay with perfect graphics is not.

    Easy way to test that: The most popular videogames of all time are: Mario (2D tiles), Zelda (2D & very simple 3D), Minecraft (blocky 3D with the worst programmer-art textures), Animal Crossing (very simple 3D imitating 2D). Graphics-intensive games pop up and vanish, because they're uninteresting.

  • Character: Who you are. In the better kinds of games, this is left blank for you to fill in. If the game engine doesn't accomodate dialogue even as well as Ultima I did, you're a mute wanderer who breaks into peoples' homes, smashes their crockery looking for coins & drugs/potions, maybe hits X to hear if they have any rumors or leads, then leaves. In action games, very little dialogue is necessary, your weapons speak for you.

    If you can freely define your Character, that interferes with Story. Until recently, at least you could rename your character, but with full voice acting for many games, they either obnoxiously refer to you as "Vestige", "Adept", "Friend", etc., or don't refer to you at all… or don't let you rename your character.

  • Story: This ties in closely with Character: What do you do? If you can wander as you please, make your own fun, whether that's good or harmful to the environment or NPCs, then you have no story, only gameplay. If you can only ride along like an amusement park railroad ride, get a story told to you and then pew-pew-pew to shoot targets, move on to the next stop, you have no gameplay, only story.

    The Disneyland ride model is a big influence, but AAA "games" with story are mostly frustrated Hollywood wastrels in the wrong medium. The obvious recent example is Death Stranding, which has hours of awful cutscenes with Hollywood people who have nothing to do with the game: A mediocre walking simulator/platformer; without the cutscenes, it might even be fun, if tedious.

An unfortunate result of focusing on Story has been forcing the player to make bad dialogue/action choices to advance, stay on the railroad unable to get out and wander away. Heavy Rain's no-choice "Press X to Cry Jason" rather than man up and go look for your lost child.

The now-defunct Telltale Games' Minecraft Story Mode had a painfully fixed main character and plot, and a doomed character, but let you choose social consequences with allies… which were then forgotten in the next chapter.

Early Final Fantasy games had a totally blank slate. FF3 is right on the cusp; it gives you a sandbox to explore, eventually hit a switch to open the next, bigger sandbox, repeat a couple more times, finally a long multi-part endgame and post-game sidequests. The characters have a secret backstory, but you can rename them, give them any job you want, play them however you want. I did one playthrough with boring Warrior, Thief, White Mage, Black Mage, another using Monk/Black Belt, Red Mage/Dragoon, Scholar/Geomancer, Evoker/Summoner. Utterly different gameplay even if I ended up clearing the same dungeons. My bizarro party got to level 99 to fight the giants.

By FF4, the characters and story are locked in place, you can enjoy it or not, and certainly the art's great and I quote "you spoony bard!" all the time, but you have no choices. Not that I'm blaming that all on JRPGs — there's Japanese games with freedom of choice, and Western games fixed on one character, Gabriel Knight is one of the earliest of this archetype.

Gamebooks like Tunnels & Trolls solos, Fighting Fantasy, Lone Wolf, etc. are odd hybrids since they have story, but almost never have a defined character (a few do, like Creature of Chaos). The more linear the gamebook is, the better the story is, but the less interesting it is to play; there's several I've done that had one win and many deaths, and so cannot be replayed. The more meaningful choices they offer, the more incoherent the gamebook becomes, just a bunch of random scenes because you can't build up any meaning like linear fiction does.

My objection to Dungeons & Dragons adventures from Dragonlance (1984) on, is that it went from a game of freeform dungeon crawls, hex crawls, or "West Marches", wandering the Referee's world, maybe loosely using a Greyhawk map or Outdoor Survival, often made up in the days between games or improvised on the spot; to railroaded "adventure paths" with fixed character roles (either named and unkillable like DL or just "must have fighter, thief, cleric, magic-user, bard, or you will fail"). 5E has become entirely that, their healing/action economy even requires a specific pacing along the railroad, and their world maps are just one-path flowcharts you move along like Candyland.

So in conclusion (almost), just say no to story in your games. Look for that infinite high of gameplay.

  • The Devil's Advocate: There are some attempts to make character or story "gameable", rather than just a railroad, most notably Chris Crawford's Erasmatazz, which he then replaced with Storytron, now Wumpus (no relation to the real Hunt the Wumpus game). These have computer-controlled drama, you talk/choose interactions with different "emotional weights", and the NPCs react appropriately. These suck as games. They can be a little interesting as a puzzle to talk to the NPCs, find out what's going on, maybe push one of them into a "win" state. Nobody'd spend long on one.

It's worth looking at Chris's development woes. Sequentiality and list of encounters in Le Morte d'Arthur he gave up on gameplay, it's a railroad click-thru of Malory's book, with a single fame/piety score to get win/lose.

His Gamers or Storytellers seems to be an admission of defeat. Yet he still has bigoted, ignorant ideas like:

This also plays into the old “evolution versus revolution” dilemma. I have long held that games will never evolve into anything with artistic merit, because the gaming audience does not expect artistic content from games. You can’t sell Beef Wellington to people who want candy. You can’t sell poetry to people who read comic books. You can’t sell art-house movies to people who watch cartoons. And you can’t sell artistic content to gamers who want action and instant gratification. Games as a a medium are ill-disposed to evolve in a storytelling direction.

This is why he fails. Games can have artistic content, just not inbred Hollywood-imitating content. There is plenty of poetry in comic books, obviously Sandman but many an issue of Detective Comics (the smarter Batman series) has moved me deeply. Many art-house movies are cartoons, or vice versa, or were when theatres were a thing, I'd start with Don Hertzfeldt's Rejected and Ralph Bakshi's Wizards. You can't sell poison apples to gamers, not more than once anyway.

I had a look at his soi-disant "Wumpus", and got this, his "non-technical" user interface. It's incredible to me that this is the guy who made Eastern Front and Balance of Power, which were techy but not a giant wall of UI clickies, badly sized in a window. Yes, it's Java, but you can make attractive and usable Java UI, it just requires effort.

I figured out eventually that you can hit Editor/Run Rehearsal (?) to play in something like a dialog box UI, was able to play through a very dull conversation, and then it gets stuck with Jeff explaining widgets to Sam in an infinite loop. Excellent. Obviously story-gaming is a solved problem. ?

What I'm Watching: The Dead Don't Die

Welcome to Centerville
A Real Nice Place
Pop 738

Not for long.

Directed by Jim Jarmusch, starring Bill Murray, Adam Driver, Danny Glover, Tilda Swinton, Chloë Sevigny, Steve Buscemi*, Iggy Pop and Sara Driver (no relation) as the coffee zombies, and Tom Waits as a beardy hermit/psychopomp/Monty Python's "It's!" man.

Sturgill Simpson's "The Dead Don't Die" is the theme song, and played far too many times, it's the only song in the soundtrack. I now hate Sturgill Simpson, despite normally liking outlaw country.

This is the slowest goddamned movie I've ever seen. 30 minutes to introduce… 12 named characters? Before anything happens, and then they reuse a lot of footage and B-roll driving thru town. The cinematography's like a student film, so awkward. And in the cop car, they break the 4th wall, or just fail to cut and edit out the actors talking about the scene, I'm not sure which. I mean, even for a Jarmusch movie, there's not much evidence of editing, it's kind of "start recording until we got maybe a scene, then go somewhere else".

And I will continue to complain about color grading. Half of the film is shot day-for-night and then tinted to almost jet black, it's very hard to see.

The film isn't just genre-aware, it's script-aware, it really makes no sense without seeing, you know, every zombie and vampire movie. So I'm good, and the gas station geek and Adam Driver will sit and explain some basic rules like tone-deaf nerds explaining Star Wars (Uh. Pointed pop culture reference.), but everyone just goes along with it except Chloë who screams and fidgets a lot, as if she was 20 and not 45.

I do like zombies that need coffee after gutting their enemies; as we see, all the zombies want something. They're the one part of this entire film so far that's not boring. Takes 30 minutes to get two zombies. Almost 60 minutes to get more, but now we got some action.

Tilda Swinton's albino Scottish samurai undertaker is fantastic, like a stoner's character for Witchcraft RPG or some such; not played for laughs, but just total bullshit. And then she gets weirder.

I don't like the ending. The long scene in the car leading up to it. There's finally some action… but it's not making any point, which is what I want from my zombie flicks. If the moral is "consumers are zombies/zombies are literally consumers", why are the cops fighting them, when cops are the enforcement wing of our corporate state?

★★½☆☆ — sometimes amusing, but a long dull journey to get there.

* Wearing a "Keep America White Again" red baseball hat; maybe in a couple months if we ain't all dead, that'll be a funny period piece.

What I'm Watching: Joker

Right at the start, I expect better of the Joker than to be mugged by kids, that should be an alley full of dead punks. Joachim Phoenix looks like crap, he's 45 here, at least two decades too old for this origin story, isn't really fit for the job. Maybe he'll toughen up by the end of this, but physically? Nope.

I definitely prefer the Jack Nicholson take: Hardened criminal who THEN goes crazier. I don't mind The Killing Joke story where a comedian becomes Red Hood, then goes crazy/gets dunked to become Joker, but his skills there are implausible. And none of this Jared Leto shit.

The plot's generally more pathetic downward spiral than an arc up to criminal mastermind, even if he has winning days (the well-memed stairs scene and on), he's a joker, not The Joker, absolutely not Harley's "Mistah J". I can't see this guy learning to make bombs, recruit hoodlum henchmen, rob banks, fight Batman, run the Legion of Doom with Lex Luthor (who's the kind of rich bastard this version would hate).

But the crimes and riots here are a pretty good start. Phoenix's Joker has a kind of pathetic charisma, good for attracting broken losers (which is all of us, except the pretty rich people, really). The cult of The Joker could be born here, even if the actual figure's not that good.

For once the Hollywood inability to leave movies alone without a fake color grade works, every scene is recolored something crazy, matching the Joker's moods. It goes from a not-terrible imitation of '70s film stock, very very obviously copying Taxi Driver, to Suspiria levels.

The supporting actors are meh, and they're a lot of the problem.

Robert De Niro as fake Johnny Carson is ancient and decrepit, he just looks bad, and of course De Niro is the least funny person in the world, it obviously hurts him to even smile, so faking Johnny's impossible. They should've got an actor who isn't mummified to play the role. Johnny retired at 66, De Niro is shockingly only 76 here, but he looks 96, barely held together by a suit.

Joker's mom (played like the Cryptkeeper reanimated Mother Bates) thinks Thomas Wayne (played incompetently by TV extra nobody Brett Cullen) is going to help her for personal reasons. In the movie, he's just indifferent, an out-of-touch Trump-like asshole, but this is a point I always come back to with the whole Batman mythos:

The Waynes made Gotham, and Bruce perfected it. It isn't that way—garbage piled up, grafitti on top of grafitti, poverty everywhere, corrupt and useless police, protests, steam pipes and vulture-like gargoyles looming over all—because they don't care, it's that way because the Waynes want a city full of despair and freaks, so that the older generation of Waynes can pretend to be philanthropists (much like Bill Gates does to the tech industry), so that crazy little Bruce can swoop down on villains in his multi-million-dollar battle armor and practice his rich-white-boy ninjitsu. So if terrible shit is happening to Joker's mom, it's because Thomas Wayne wants it that way.

I'm particularly unimpressed with Alfred (Douglas Hodge) and Little Bruce; Alfred's not supposed to be a wuss, he doesn't hiss and whine about cops to strange men at the gates, he's (depending on iteration) former British Army, and while he's not The Batman himself he's more than capable of defending the manor. The version in the Gotham TV series (played by Sean Pertwee, son of my favorite Doctor Who) is so much better. Little Bruce is a puppet even by the standard of child actors.

Slight amusement: The movie theatre at the end, where Batman is made… is playing Zorro the Gay Blade.

★★★½☆ — Kudos for trying something different, if not always successfully.

Apple Silicon

  • Apple event: ♫ "The chime is back!"
    • Reasonably good summary of the new chips, and how Big Sur works with your old Intel applications.
    • Device coverage is very superficial, "it runs X specific app in Y time!" Well, if I haven't used Logic, is that good?
    • I know Apple will never show real benchmarks where they might not be best in everything, but I want to see real benchmarks.
    • I know Apple will never show real device teardowns, only silly 3D animations of flying parts, but I want to see real device teardowns.
    • ONE MORE THING! (Why is only John Hodgman back, but Justin Long was too good to be a Mac again?)
  • AnandTech review of A14, estimates of M1 covers some of what I want to see.

In short, the A14 in the latest iThings is just barely short in power of the best AMD CPUs, and beats all the Intel CPUs, at half the power consumption. M1 ("Apple Silicon") is apparently much faster, Apple claims the fastest CPU in the world, which may be true enough.

Intel is, to be really technical here, fucked. They're facing Apple and AMD on the high end, and ARM below (you couldn't make an Intel RasPi 400!) There's no space for Intel now except corporate garbage Windows desktops, and many of those can be replaced at a fraction of the cost with ARM computers. What happens when every IT department decides to halve their parts and power costs, and high end users already buy Apple?

So my thoughts on Apple's new M1 lineup. Obviously, I don't have one yet, haven't seen real benchmarks, forward-looking statements require use of the Spice Mélange, expands consciousness, etc. etc.:

  • MacBook air: With 8-core, 16GB RAM (maximum), 1TB SSD, price is $1649. But uses passive cooling, do not buy this. I love the MBA form, I love hard function keys, and probably this is perfectly fine for casual use. But the second you try to do demanding tasks, it's going to be heat-constrained.
  • Mac mini: With 8-core, 16BB RAM (maximum), 1TB SSD, price is $1299. This has active cooling. Of course it has no keyboard, mouse, or monitor.
  • MacBook pro 13": With 8-core, 16BB RAM (maximum), 1TB SSD, price is $1899. Active cooling. Only has 2 Thunderbolt/USB 4 ports, it really needs at least 3: Power, external drive, external monitor, but you can buy a hub to dongle-book all your drives & monitors, and power in on the other. It does have a good old fashioned 3.5mm audio jack; I'm surprised they haven't put a lightning port there.

All have "integrated graphics", which in the Intel days meant crappy video performance, but Apple's on-board GPUs aren't bad (not new AMD or Nvidia level, but tolerable). However, they are "unified memory", which means the GPU is going to take 2-4GB of system RAM away from you.

The problem here is that 16GB RAM limit, which is really 12-14GB. I regularly run up against my old iMac's 16GB limit in development with a virtual machine (and that has 2GB dedicated video RAM). 3D modelling or high-end games, video editing, and many other problems are going to be crippled. Apple needs to make 16GB the minimum casual level, and 32-128 GB for serious users.

So, I'm probably waiting for the next batch of Macs; I may get the MBP 13" with an eye to selling it & replacing it with a better machine ASAP. If you're casual, that's probably a perfectly nice machine, it's only $250 more than the MBA.

What I'm Watching: Twilight Zone

In this case, the 1983 movie. It's kind of a waste of celluloid, the originals were better, but back then you would be lucky to ever see a good episode in syndication, and if there were VHS tapes of the series, they would've been very expensive. Maybe the best case would've been to never make another Twilight Zone after Rod Serling's death. Not all the originals were great, many were repetitive, but they had a real sharp edge which is missing here.

The two Dan Aykroyd scenes are short but OK. Dan driving around scaring people would be a better show.

"Time Out" with the racist becoming prey for the racists. I hate the time-jump mechanic, and it's a very selfish revelation. What does Nazi Germany or Vietnam have to do with him, anyway? Maybe if they'd just had 'Nam and the KKK as his direct ancestors, and it would've been less preachy. The original plan was to have two Vietnamese kids he has to protect to redeem himself, but they and Vic Morrow died in a helicopter accident on set, so what you see is what they could salvage from that footage.

"Kick the Can" with Scatman Crothers making old people in a retirement home young for a night. The original was kind of a traditional fairy tale except in reverse, the fairies take the elders instead of the children, and leave the narc behind. The remake has only the fun "kid" run away young, with no real moral for everyone left behind.

"It's a Good Life" introduces a new character, teacher Helen (Kathleen Quinlan), instead of just having the miserable "family", and the town isn't nearly as bleak and horrible as the original episode. Little Anthony is now… 9? instead of 6, which makes him more capable of reason, if still having tantrums. The new kid isn't as creepy as Billy Mumy was, but he's fine. There's no cornfield. The cartoon monsters are hard to even look at, they're cel-painted instead of CGI or practical, but it's not comic like Who Framed Roger Rabbit. The happy ending is so weird; is Helen hoping to be this new god's controller, or is she horny for the boy, or genuinely wants to teach? Nothing about her motivation is revealed so we can't tell.

Notable for having a Tempest arcade cabinet and gameplay!

"Nightmare at 20,000 Feet" remake with John Lithgow doesn't work at all. William Shatner always looked competent, so his breakdown was frightening. Lithgow is a crazy man when he's sane, and he's a plausible Trinity Killer or Lord John Whorfin when he's not. The new gremlin is differently awful from the gorilla-suited original. Nothing is resolved, nobody learns anything, it just gives up.

★★☆☆☆ — I remembered this as being much better than it was.

What I'm Watching: Three Korean Zombies Edition

  • Seoul Station: Animated prequel to Train to Busan. Hye-sun, a young woman of negotiable affections and her douchebag boyfriend/wannabe-pimp, and a hobo and his mysteriously dying "bro", cross paths at Seoul's main subway station just as the zombie plague starts. It is successful at getting me to care about the girl, and to a lesser extent the men around her; one character flip didn't surprise me much but it needed a little more evidence.

Animation's kind of stiff, low FPS, but detailed, very much not in the style of most anime. What it most reminds me of are the Long Tomorrow and B-52 segments of Heavy Metal; I think it's not actually rotoscoped, but looks a lot like it. Despite being animated, with "unlimited special effects budget" as it were, there's not a lot of sets, not a lot of speaking parts, not a lot of flashy action pieces, it could've all been filmed practically for less money.

I'm a little put out by the cell phone vamping. Girl turns off her iPhone. Then it's out of reach. Then they're in a tunnel. Then coverage just stops because… it's plot convenient. And the other side just sits there shouting her name into it, instead of doing anything. It's a good way to pad out 30 extra minutes of "tension" that wouldn't exist if people just calmly (under zombie attack, yes) left messages for each other while travelling towards a common point.

It is very Korean, where the government is not on the side of the people, it's in self-preservation mode and has been putting down anti-government riots since the war. An American version of this (suppose Fear the Walking Dead was animated and wasn't absolute trash) would make different stupid mistakes; just as many dead civilians but less heartless bureaucracy. A Japanese version would be briefly hilarious, and then everyone would die because they were too polite to break skulls. The Chinese version would probably drop fuel-air bombs on the area.

★★★½☆

  • RV: Resurrected Victim: A prosecutor comes over to his crazy sister's house, and finds his dead (murdered by a mugger) mother there watching TV. A pastor (ugh, Korean christians; worse than zombies, and they're all thru this film) barges in and falls to his knees calling out to Jesus, quoting his "resurrection" fairy tale, singing and praying like the crazy people they are. She goes all zombie on them, as anyone would. Then we get an official briefing/infodump about resurrections, because apparently the writer hasn't heard of "show, don't tell".

It feels like a TV series, several episodes spliced together into a "movie". Or a fever-dream scenario by a Call of Cthulhu referee. Coincidence or fate brings everyone who needs to be in a scene together, but the B-team and C-team investigators just get forgotten for long stretches of the film, then show up again to tag along a couple scenes behind the prosecutor.

"The fact that RVs always appear in the rain is related to the fact that 80% of the human body is H2O.
And the iron content in their blood is more than ten times higher than that of normal humans.
When the vengeance is enacted, all these seem to be related to the strong magnetic field that is formed."
—inexplicably bad English-speaking… Italian? gentleman with a priest sidekick, possibly in the wrong movie.

The mystery being solved is fine, and eventually all the plots are tied together, if not at all satisfactorily at the end, with a preachy speech. The "RVs" do almost nothing, the entire plot could be a non-supernatural drama, or have hallucinations or visions of ghosts, with minimal changes and far less of a wasted premise.

★★★☆☆

  • Stranger: I'm only a few episodes into this series, about a prosecutor (again?!) who feels no emotions (a philosophical zombie!) after a childhood surgery. He solves crimes, fights corruption in his bureau, tries to pass as a person but doesn't really succeed. The sympathetic woman cop Han (Doona Bae, most recently from Kingdom and Sense8) and his rival prosecutor are well-played. There's an overall season plot, and not much episodic plot, which makes it hard to decide where to stop, doesn't give a clear delineation between episodes, and I can't binge more than a couple hours of Korean TV at a time, so it's taking a while to get thru.

But so far, I like everything about this, good investigation, forensics, office treachery that isn't mysterious figures in the dark but rather just awful coworkers. Best of all, a protagonist who's proactive, isn't all weepy and stupid, has his own secrets but isn't a villain. Han is also really adorable, she tries to be a supercop (a coworker calls her "Angelina Jolie", but really she's more Michelle Yeoh ) but also takes in strays and is surprisingly good for a police force not exactly known for that.

★★★★½

RasPi 400: Adorable New Keyboard Computer

This is very nice, at least in principle.

Classic home computers – BBC Micros, ZX Spectrums, Commodore Amigas, and the rest – integrated the motherboard directly into the keyboard.
No separate system unit and case; no keyboard cable. Just a computer, a power supply, a monitor cable, and (sometimes) a mouse.

Hm, the naming is obviously after the Atari 400 (so 800 will be the 8GB model?), but they don't mention Atari. Well, the criminals now doing business as "Atari SA" aren't people you want to associate with. And these are English, who couldn't afford nice computers back then.

It's not really $70, it's $100 plus a monitor, because the cabling is unusual, you should not get the no-cables computer-only box. When I got my RasPi4 I had to email them to get my micro-HDMI cables (which they did supply), and the cheapo monitor is still terrible but I haven't found a good cheap replacement. The RasPi400 also doesn't have a power switch; the CanaKit set at least gave me an inline power clicker.

Having the keyboard & computer in one gets you much closer to a nice clean cyberdeck than the current maze of wires; there's no battery pack, but in most cases what you want is a small computer in your satchel you can set down, plug in, and work. I'm dubious of using a mouse with this in most space-constrained areas (machine rooms, or cafés—in the distant future when we can go back to cafés), but trackpads and trackballs are expensive, too.

RasPi4 is critically heat-constrained, the fan runs all the time on mine or it dies. El Regerino does a teardown and review, and the giant heat sink plate seems to solve the problem. I could probably justify getting this just to have silence! Or a fedi-pal has suggested the Argon One heat-sink case, which is a much cheaper fix.

Software's still an issue. Raspbian is a relentlessly mediocre Linux variant; I said earlier I'd switch it to BSD, but that hasn't happened yet. I should update to the newer "Raspberry Pi OS" and see if it's better. … Later: Not really. You can set some better scaling options now so it's not unreadable. WOO. (I shouldn't mock, scalable UI is really fucking hard, and they've got at least most of the stock software configured for it; notably Chromium yes, but not Firefox).

Dev tools are not great on RasPiOS. Ludicrously, they suggest Python, the slowest modern language on the slowest modern hardware. Their free "Create GUIs with Python" book uses a fat layer on top of Tkinter, which is awesome for portability, totally awful for going through now 3 layers to reach hardware. No. Almost anything will be better on it. As I noted, Gauche runs, it's fine for porting small tools, and has industrial-strength (and industrial-ugly) GTK.

A much better IDE will be sudo apt-get install vim-gtk3 (gvim runs faster than vim in lxterm, though it pulls in a preposterous set of dependencies)

Just as a sanity test ("maybe a 4GB, 1.5GHz, heat-constrained computer is OK for Python!"), I wrote a tiny 10 PRINT maze program in both. Gauche fills the terminal instantly; I can see the lines being drawn by Python, and it's even slower in any IDE. That's just one random number per char, imagine doing real work!

All their programming books and the new Beginner's Guide are up for free as PDF on their MagPi books page, or now in-OS from Raspberry menu, Help, Bookshelf. Looking thru the guide, it covers:

  • Hardware tour so you can identify ports
  • Software setup
  • Programming in Scratch for kids. As I was raised on BASIC and assembly, I roll my eyes at programming by drag-and-drop instead of interactive text editing, but Scratch isn't awful, just cutesy, bulky (a 10-statement program will fill a page of the book) and very slow.
  • Programming in Python. Thonny IDE looks OK, for what it is, with integrated REPL, tabbed editing, and debugger. But IDLE does as well; both use Tkinter, and are non-fun slow on the little device.
  • A starter chapter on using the GPIO, doing wiring, digital circuits, and Scratch to blink an LED. Then controlling the Sense Hat, which is maybe the worst peripheral I've ever seen. There's plenty of other small-screen interfaces or sensor devices that'd be better, surely.
  • Appendices on how to install software, and finally an extremely inadequate tutorial on using the terminal.

For $100, it's a cute little portable computer, but the way they suggest using it will make it seem like a 1K RAM ZX-80, not the reasonably fast secondary machine (or kid's first Scheme terminal) it can be if you're not working under multiple layers of mud.

Reinventing the Wheel

Sure, there's existing code. Somebody Else's Code. It works fine, maybe not as fast as you'd like, or the interface isn't quite right. That's how it often is with me and SRFI-13. Olin Shivers is a skilled Schemer, back when that wasn't cool (OK, it's still not cool), but some of his APIs enshrined in early SRFIs drive me a little nuts, and the implementation is slow because it's so generalized.

So after a few false starts and failed tests, I now have these pretty things: (updated 2020-11-10, enforced hstart, hend boundaries)

;; Returns index of `needle` in `haystack`, or #f if not found.
;; `cmp`: Comparator. Default `char=?`, `char-ci=?` is the most useful alternate comparator.
;; `hstart`: Starting index, default 0.
;; `hend`: Ending index, default (- haystack-length needle-length)
(define string-find (case-lambda
    [(haystack needle)  (string-find haystack needle char=? 0 #f)]
    [(haystack needle cmp)  (string-find haystack needle cmp 0 #f)]
    [(haystack needle cmp hstart)  (string-find haystack needle cmp hstart #f) ]
    [(haystack needle cmp hstart hend)
        (let* [ (hlen (string-length haystack))  (nlen (string-length needle)) ]
            (set! hstart (max 0 (min hstart (sub1 hlen))))
            (unless hend (set! hend (fx- hlen nlen)))
            (set! hend (max 0 (min hend hlen)) )
            (if (or (fxzero? hlen) (fxzero? nlen))
                #f
                (let loop [ (hi hstart)  (ni 0) ]
                    ;; assume (< ni nlen)
                    ;(errprintln "hi=" hi ", ni=" ni ", hsub=" (substr haystack hi hlen) ", bsub=" (substr needle ni nlen))
                    (cond
                        [(cmp (string-ref haystack (fx+ hi ni)) (string-ref needle ni))  (set! ni (fx+ ni 1))
                            ;; end of needle?
                            (if (fx>=? ni nlen)  hi  (loop hi ni) )
                        ]
                        [else  (set! hi (fx+ hi 1))
                            ;; end of haystack?
                            (if (fx>? hi hend)  #f  (loop hi 0) )
                        ]
        ))))
    ]
))

;; Test whether 'haystack' starts with 'needle'.
(define (string-has-prefix? haystack needle)
    (let [ (i (string-find haystack needle char=? 0 0)) ]
        (and i (fxzero? i))
))

;; Test whether 'haystack' ends with 'needle'.
(define (string-has-suffix? haystack needle)
    (let* [ (hlen (string-length haystack))  (nlen (string-length needle))
            (i (string-find haystack needle char=? (fx- hlen nlen)))
        ]
        (and i (fx=? i (fx- hlen nlen)))
))

Written for Chez Scheme, caveat implementor. BSD license, do what thou wilt. If you find a bug, send me a failing test case.

I don't normally bother with fx (fixnum) operations, but in tight loops it makes a difference over generic numeric tower +, etc.

I Think We're Property

Dangers of near approach -- nevertheless our own ships that dare not venture close onto a rocky shore can send rowboats ashore --
Why not diplomatic relations established between the United States and Cyclorea -- which, in our advanced astronomy, is the name of a remarkable wheel-shaped world or super-construction? Why not missionaries sent here openly to convert us from our barbarous prohibitions and other taboos, and to prepare the way for a good trade in ultra-bibles and super-whiskeys; fortunes made in [155/156] selling us cast-off super-fineries, which we'd take to like an African chief to some one's old silk hat from New York or London?
The answer that occurs to me is so simple that it seems immediately acceptable, if we accept that the obvious is the solution of all problems, or if most of our perplexities consist in laboriously and painfully conceiving of the unanswerable, and then looking for answers -- using such words as "obvious" and "solution" conventionally --
Or:
Would we, if we could, educate and sophisticate pigs, geese, cattle?
Would it be wise to establish diplomatic relation with the hen that now functions, satisfied with mere sense of achievement by way of compensation?

I think we're property.

I should say we belong to something:
That once upon a time, this earth was No-man's Land, that other worlds explored and colonized here, and fought among themselves for possession, but that now it's owned by something:
That something owns this earth -- all others warned off.
Nothing in our own times -- perhaps -- because I am thinking of certain notes I have -- has ever appeared upon this earth, from somewhere else, so openly as Columbus landed upon San Salvador, or as Hudson sailed up his river. But as to surreptitious visits to this earth, in recent times, or as to emissaries, perhaps, from other worlds, or voyagers who have shown every indication of intent to evade or avoid, we shall have data as convincing as our data of oil or coal-burning aerial super-constructions.
Book of the Damned (1919), ch. 12, by Charles Fort

Eerily repeated in a lot of science fiction. Ironically, H.G. Wells' "War of the Worlds" is nearly a "we're property" story, but Wells irrationally hated Charles Fort. Likes repel, I suppose.

A few obvious ones, but there are dozens more (put them in comments if you like; archive.org links preferred!):