What I'm Watching: Occupation

An attempt to do a big science fiction war movie. For Australia, it's very ambitious.

What works: Special effects and explosive squibs are competent. The actors are mostly good, though the hero's a doofus. I didn't hate anyone or anything, though it falls far short of respect.

What doesn't: Almost everything else. It's like the writer saw Independence Day, but didn't have the skill to produce all the intertwined plots, and really didn't have the budget, so it's just the grubby resistance in a single forest. Despite a high female cast, I'm not sure it ever passes the Bechdel test; a male character calls the female Army leader a ball-buster, and Strine misogyny isn't subtle throughout. There are several Asian characters who are treated well, but rather blatantly no Aborigines, who you'd expect would survive well in this environment; but they may be on the side of the invaders since the white fuckers are finally getting what's coming to them.

15 minutes of Australian hooligans doing road work, dating, and playing sportsball, before spaceships with searchlights fly over and shoot up everything. Yee-haw. Then alien infantry who look just like Humans in armor march around with plastic toy rifles shooting buildings. They're completely inaccurate, which is weird for beings that can cross interstellar distances. A dozen local idiots, the protagonists, escape in a camper van, which should be an obvious target for the aliens, but they never seem to be able to hit it. Finally the Strine Air Force manage to shoot an alien down, which again seems implausible for advanced aliens.

There's some ludicrously dramatic "pose as a team" scenes, and a lot of whining and sniping at each other, I think intended to make them feel like a team coming together.

The alien infantry don't have thermal sensors, and are all but blind, they just walk past people hiding in tin shacks and under blankets like children. The armor isn't totally useless, for once, but their guns aren't security-locked, so any monkey can grab one and shoot it. They walk into hostile-occupied buildings and just wander around alone so a group of monkeys can overwhelm them. These idiots are incompetent. The US military is better equipped and trained.

What follows is a training and war montage based on Ewoks vs Stormtroopers, except the Stormtroopers here are even worse idiots. And the Ewoks are so dumb they throw phones containing explosive batteries into a fire (but the filmmakers don't understand the consequences).

The Strine military finally shows up again, which ends the insurgency. I don't believe any of these people could have survived, the military doesn't know how to hide, and does stupid standup fights. While the aliens have shown no cunning or skill, they have apparently endless forces and better weapons.

Of course there's an explanation at last, and it's stupid: The aliens devastated their planet, and we're polluters, so they'll take Earth. But if they already have interstellar ships, they don't need planets, and anyway could've just bought Australia for a few spaceships.

The happy ending is so out of place and not how things work, I dunno what the writer was on.

I'm not unamused by the film, but it's a trainwreck.

★★½☆☆

Did You Know Twitter Still Exists?

I mostly forgot Twitter was a thing. Fediverse/Mastodon is more interesting, blogs more in-depth, Discord & Slack more immediate. Google+ is shutting down, MeWe is still small and kinda weird, reddit's poison, but they're all more fun. I guess Twitter was a big deal once? Kind of like that Facebook thing I deleted? It's been weeks since I've seen a link to Twitter, and my feeds used to have so much t.co junk in them.

So, this beta app. The first and most obvious point, the color scheme and conversation UI. iMessage has set the standard of blue=secure Apple person, green=disreputable Android person (literally: no iMessage end-to-end encryption, could be anyone over insecure SMS). Here, it looks like (contrary to the text) white is randos, green is followees, blue is you. And it's upside-down, newest-bottom; this is a very common disorder, but I don't know why anyone does it. Oldest should always be at the bottom, newest at top, because that's how you blog/microblog, and you mostly want to see the newest posts in a conversation.

Tapping to display the star ("heart" as they call it now, well I'll tell you favstar was not favhearts) comes from the old Tweetie app they bought and killed to make their terrible apps. Removing it is typical flailing-around-without-ideas Twitter. Discord & Slack let you respond to any post with an emoji, which is clearly the coming thing. Micro.blog hasn't yet made this a silent interaction, but it's not uncommon to reply with just an emoji.

Pinned tweets, they already have that. Just checked, mine's still my favorite scotch review:

Mark @mdhughes
6 Apr 2011
Laphroaig Quarter Cask: Smells like ash & wet fields, tastes like the sweat off your girlfriend's boobs, feels like your first heartbreak.

Mastodon has pinned posts, but I don't use one, since the profile text and custom fields (just "Blog" for me) are long enough: @mdhughes@appdot.net

"a status update field (i.e. your availability, location, or what you are doing, as on IM).": Isn't that what Twitter is? The input field used to just say "What are you doing?" Admittedly, you can't spam your iTunes music to that, or you can but everyone will hate you. My AIM status was always an important but silent signal of what you could message me about. On Mastodon I often change my "real name" to show emoji of my current status, currently ☃️⌨️?, but it'd be even better as a custom field. Maybe I'll see about finding or writing a command-line utility for that this week.

Spread of Terrible Programming Languages

Abstract—The English-like business programming language COBOL saw widespread use from its introduction in 1960 well into the 1980s, despite being disdained by computer science academics. This article traces out decisions made during COBOL’s development, and argues that its English-like appearance was a rhetorical move designed to make the concept of code itself more legible to non-programming management at computer-using companies.

I found some of the references much more interesting than the paper, which is a pretty high-level history avoiding the actual boots on the ground details.

COBOL was designed (and fought over very hard on this point) so that unskilled managers could "read" it, but in my view that had little to do with its spread. Middle management where that would matter has no buying power, and executives won't read more than a sentence on a slideshow.

Ubiquity made much more of a difference; no two computer installations were compatible until the late '60s, so the alternatives were COBOL, FORTRAN, LISP, and a hundred weird languages invented at each facility. Given those choices, I'd pick FORTRAN or LISP, but even COBOL would beat rewriting on every machine. A bunch of companies and government agencies ended up clustered on that choice, so it became widespread, not on any merits but because programmers could move code semi-automatically.

I know this because it happened at least five more times that I can think of, and only once with unskilled readability as a goal:

  1. BASIC is a tutorial language for children, very poor for large programs, very slow compared to C or ASM, grossly inferior to Pascal or Logo for any role. BASIC became ubiquitous because it can be implemented in a few K of RAM and worked nearly the same on hundreds of incompatible timesharing and microcomputer systems.
  2. Java is a mediocre Objective-C/Smalltalk replacement, applets turned out to be too heavyweight for the web and insecure, but cross-platform on servers turned out to be very valuable; cross-compiling C++ is a total crapshoot. Developers can have nice Macs and still compile Java code that runs on non-Mac servers.
  3. Linux (not a language, I know, but same pattern) is hot garbage, the product of a drunk, belligerent Finn student putting a kernel that'd get him a failing grade in an OS class on his 386. But because it's so quarter-assed and has no device driver support, it runs on anything like a virus. So now UNIX is all but dead, killed by a nematode parasite that fills the niche.
  4. PHP is a cruel joke, a gross hack to put server-side script in HTML instead of generating HTML in code or templating. But it was easily installed in Apache, runs everywhere with no setup. So half the web runs on this shit, from WordPress to Facebook.
  5. JavaScript started life as a six week hack to get LISP & Self-like programming, with C-like syntax for marketing reasons, in a web browser. And until early 2000s, it wasn't portable enough for anything useful. But when IE died and the other browsers implemented ECMAScript consistently, it became the universal language. It's still weird and fragile; I don't dare write it without eslint. But it may be the language of the century.

There's the similar case of IBM PC/DOS/Windows vs microcomputers and Macintosh, which were better tools but fragmented, but that's more about central authorities imposing Nazi-supporting IBM, and convicted criminal organization Microsoft bribing and extorting to kill competition. Common languages would likely have been enough to keep competition and diversity going if IBM & MS had been burned to the ground and their scatterlings shot as they ran back in the '70s.

The author of the paper sort of slouches in this direction but doesn't quite get it, when pointing out how science and technical culture has standardized on English. We are all incompatible machines, but a common language lets us argue.

I hate when papers list references without URLs:

  1. 10 PRINT CHR$(205.5+RND(1)):GOTO 10: Fun little book, not at all relevant to the paper.
  2. N. Wardrip-Fruin, Expressive Processing
  3. M.C. Marino, Critical Code Studies
  4. B. Schneiderman, The Relationship Between Cobol And Computer Science
  5. J. McCarthy, "Memo To P. M. Morse: A Proposal For A Compiler" Memo CC-56
  6. D. Nofre , M. Priestley , and G. Alberts, "When Technology Became Language: The Origins Of The Linguistic Conception Of Computer Programming, 1950–1960"
  7. M.D. Gordin , Scientific Babel: How Science Was Done Before And After Global English

Debugging in C

I've spent a horribly long time tonight staring at nested stack manipulation code now to get algebraic expression parsing (mostly?) working. I hate unary minus; life is pretty good except for that ugly little weiner with its binary operator twin, and then BAM weird compromises in your code.

For most errors, I rely on testing (even if just firing a test script through the language, as I'm doing with tbasic) and debug mode with verbose stderr logging. But this is C, where the slightest mistake can be EXC_BAD_ACCESS with no clue where. So then I need a debugger…

% make && lldb -o run -- tbasic -d test1.bas

[update: Forgot the -- before the program, which prevents lldb from reading those params. Command lines without parens are easy to get wrong!]

I don't really do much serious with lldb, I just need to see where an error occurred, backtrace (bt), and sometimes print some variables, to usually be able to solve a crash. It's a little frustrating that the lldb environment is so primitive, though, doesn't even have stdout, stderr (weirdly \<stdio.h> is callable), so how do I call utility functions? Had to rewrite some functions to take default NULL values.

Anyway, let and print (and error, my idiosyncratic stderr print) work, there's not a lot left in BASIC then I can get back to more serious things.

What I'm Watching: Struggle: The Life and Lost Art of Szukalski

A Netflix documentary on a largely-forgotten sculptor and artist from the early 20th C. I've seen a few of his pieces in underground comics and books, and had heard his Yeti conspiracy in SubGenius tracts but hadn't connected them previously. This film takes as primary source his bragging which exaggerates his influence, which in reality largely ended in WWII.

George DiCaprio, Leonardo's father, knew him, and both do narration and interviews and are making this film public on Netflix. So, take a vanity project for what it is.

His temper tantrums at museums and galleries are part of why he is "lost", but his really noxious antisemitism and Polish nationalism are the "we don't want you here" part. Like many European and English writers and artists of the time, even those who were in different countries and didn't like Hitler, he still loved fascism and inciting murder of Jews. He wasn't just obscure because he lost his Polish studio, but because he made himself untouchable. The film keeps touching on that and then startling away, and making apologies for him.

His later derangement and conspiracy theories of a deluge and Yeti-people are… well, charming by comparison, but claiming that many people right among us are subhuman corrupters isn't any better, and leads to the same atrocities if you get enough crazy people, and we're full up on crazy people these days. While the film spends some time on it, reading about his views online shows they really soft-pedalled it in the film.

At first I felt this was a bit of an American Movie clone, Stas' focused but low-class craziness and the long downward slide. But no, it turns out he's a very different kind of monster turned failure.

★★★½☆

Programming in C

On tbasic, I've been doing all my C coding in BBEdit, not fucking Xcode, and it is fantastic. Doesn't crash. Syntax highlighting works, and by "works" I mean doesn't replace my text with Cyrillic as Xcode is wont to do (I do not like the new BBEdit color theme editor, but it's a far cry from stabbing me in the face like Xcode does). BBedit's window stays where I fucking put it, and sidebar shows clearly which files are open and modified. Running make from iTerm2 works fine, if you aren't an idiot and each compile produces less than a handful of errors. I can't really use BBEdit for JavaScript which needs more tool support, but for simpler languages, it's fine.

OS X Mojave no longer has C man pages visible anywhere I can find, so Dash is the only way to look anything up:

To use it from the shell, create dashman: (hashtag command-line integration, I couldn't find this in any search, and Dash has no AppleScript which is my usual solution to o'erweening GUIs)

#!/bin/zsh
open "dash://$*"

Hm. So, I've worked with people who don't learn their languages, they just rely on autocomplete in an IDE, snippets, and StackOverflow. If this is you, if you can't code without an Internet connection, you can't code. Please stop programming, go away, and read a book until you know the syntax and fundamental APIs, because right now you do more harm than good.

That said, while I studied K&R (and Stephen Kochan's Programming in C, my introduction back in the '80s) with the intensity of a snake-handler reading his Bible, I certainly can't remember every strcspn, strcoll, strstrn or whatever random series of 7-letter identifiers they had to use back in the '70s (even in the late '80s, I was still using C compilers which only distinguished 7-letter identifiers). C's libraries are often gibberish and searchable man pages are all we have.

Metal 2019 Tuesday Music

Gonna start this year off with some music discovery; all three of these get updated weekly, so bookmark this post and check back. In a long list of things Apple Music doesn't do well, there's no way to pin them to the For You page. And the best album of last year: