Apple is a Symbol

"If anyone reads this post I'm sure loads of people will tell me that my problems are all my own making and if only I invested in an iPhone all my problems would go away. Well you know what? APPLE IS A SYMBOL OF PRETENTIOUSNESS AND IGNORANCE - YOU DO NOT EVEN KNOW HOW YOUR PHONE WORKS - I DO NOT HAVE TO PAY A TAX TO APPLE TO LISTEN TO MY MUSIC."
Do I really need to get out the soldering-iron again?

Cash, grass, or ass, nobody rides for free.

You can pay the "Apple Tax" for a working system, and as someone who's written low-level audio software: A working system with the lowest-latency, least horrible (not nice, but least horrible) audio APIs in the industry. An iPod touch is still sold with 128GB for $299, which compares favorably to the $500 CD player with 10 seconds of skip protection I had before iPods.

Or, if this is just going to be a home system, how about buying a real stereo system with an amp, and play through that?

Or you can pay with a pile of wiring and an ugly box under a cheap CD player.

Or you can commit to spending the next decade of your life on low-level software and audio hardware trying to make Android audio that doesn't sound like a backfiring Chevy. Nobody else has succeeded, but maybe you'll be the one.

I love these things where someone creates a problem for themselves and then blames THE MAN for it.

WordPress updated

Went ahead and updated to 5.0. And immediately hit a "No update required" bug, had to shell in and disable the cache. Great testing, Automattttttic.

Took a look at Twenty Nineteen theme, but even after completely customizing the CSS, it was screwing with my layout in unpleasant ways. In 2019, blog columns are 640px wide, instead of 840px in Twenty Sixteen! Nope. So updated 2016, restored my Fake Emoji Fuck Off, more custom CSS, and things are back to normal.

I'm ignoring Gutenberg for now, but Jetpack's got a Markdown block, so that may usable someday.

Am I really better off with this giant pile of junk, instead of going back to blosxom or some other static generator? I could write my own in a week. Well, I would miss media management. Automatic reposting to Mastodon and Twitters; I could script that myself, too, but Twitter's hostility to APIs means I'd be constantly fixing it or cutting off Twitter. So I'll stick with this for now.

China, Shenzen, and Quality Control

And much more. There's a good lesson there, and it's not just in China, they're only the worst-case end scenario. I look at this shit and see us in 20 years.

Beer (since they bring that up in the first video) is in a precarious place. Since the '80s, we've had some great microbreweries come up like Ninkasi, Big Sky, Deschutes. We used to have good regional beers like Rainier and Lucky, but then they were bought by giant breweries and turned into fake labels. The "mainstream" beers are garbage, mildly contaminated water you wouldn't wet a pigsty down with, sold entirely on marketing budgets and association with sportsball. If I see someone drinking Coors or Bud, I know they're tasteless and scream at hooligans on TV giving each other concussions. Microbreweries are often on shoestring budgets and one downturn can kill them; happily it's easy to homebrew and start a new microbrewery, but it's a thin line keeping us from going dry or drinking fucking Pabst.

We've very stupidly sent all our electronics manufacturing over to China. If you want good hardware from China, you have to stand over them and QA everything like Apple does, and then get accused of using slave labor, which it is (best-paying slave labor in China, but still so unethical it makes me nauseous). Huawei's CFO has been arrested, and many places aren't using their equipment now because they almost certainly have CCP spyware, but it's still the only place that makes most electronics. This is civilization-ending-level stupidity.

We should have our own Shenzen SEZ (I'm not suggesting loosening our environmental or worker protections, weak as they are under the hideous cheeto person's administration; but some tax incentives would be great), and be making our own hardware for secure systems, but even if we could get workers to do it, we don't have anyone to train them. We used to have Radio Shack for learning to make electronics, but RS fucked it up by selling garbage consumer toys (mostly sourced from China), so they were driven out of business by cheaper online ordering of garbage consumer toys. So we're at the mercy of another country being driven into self-destruction.

US physical infrastructure is crumbling in many places, and entire cities like Detroit are unsafe to inhabit, because politicians have no reason to do anything about it; all money goes back to the companies that bribed them into office, while poor people in cities by definition don't have enough money to bribe them (PR con artists call these bribes "campaign finances"; I call them malfeasance and we should hang them all). The culture of "not my problem" is just as endemic here, in non-"Communist" countries; if we haven't collapsed as far yet it's because most of our buildings are under 100 years old and we build over things faster than they rot.

In software, we do it to ourselves. I dislike/distrust most software, because we have absolutely zero quality control; people ship any damn thing, and even these "walled gardens" don't do anything to stop it. There's so much garbage on the Apple App Store, basically just screenshots and RSS scrapers, or recompiled demo or tutorial book projects, named to take advantage of Apple's shitty search and advertising interfaces, and nobody cares because you can't set a decent price. So only scammers and ad companies and loot-box sellers can make money there. Why does anyone buy a $1000 iPhone when almost all the software on it is shit? Google Play is 100x worse, it's essentially nothing but viruses and scams, because Google's not just uninterested in QA, but profits better from spyware.

Commercial desktop software isn't much better, I think harder about wasting $20 on software than I would on a $100+ non-electronic physical object. In the last 2 years, I have literally upgraded two programs (somewhat reluctantly in one case; old version didn't work on Mojave or I'd've kept using it forever, and the new version can take 5-10 seconds to start, with a splash screen) and bought nothing new, because everything new that I try is shit. I'm using a free thing called "LimeChat" for IRC, because Adium's half-broken by neglect, and it's awful, but slightly better than command-line irc; I wouldn't pay for this.

There's some quasi-commercial stuff where "open source" means you can use the tool but there's ways for the corporation who supports it to make money, and some of these aren't the worst software ever made. WordPress, obviously. Atom's in a dangerous position where it's supported by GitHub, which was making a little money on services, and is now owned by Microsoft, who makes Quality Job #NaN. Will Atom get the performance rewrite finished before Microsoft shutters GitHub? Will it keep working? Nobody knows! Fucking Slack is appallingly bad, not because it's Electron but because non-corporate customers don't matter to them.

Free software is mostly garbage, and we get things like the npm event-stream takeover because nobody maintains their own shit, just make junk and throw it away, and then we're SHOCKED when criminals see this as an opportunity.

As usual, I don't have solutions, only problems. I write my own software so I don't have to rely on other people's software. I ought to grow my own food, dig a well, and stockpile guns and ammo, but I'll probably just turn Reaver if I survive the coming collapse of everything.

What I'm Watching: Get Shorty

I love Elmore Leonard's books, "Get Shorty" especially. The Barry Sonnenfeld/Travolta/DeVito film is silly, but a good take on it.

So this series made me wary. For good or ill, they've changed everything except the one-sentence summary: "Hoodlum makes a movie with stolen money". And it's full of "actors", visibly playing characters, rather than character actors; just like the prior movie.

They've replaced cool shylock & legbreaker Chili Palmer (Travolta's a stiff "actor" but was perfect for the role; he bleeds desperation and confusion) with inexplicably Irish scummy bagman & hitter Miles Daly (Chris O'Dowd), and piece-of-shit producer Harry Zinn with piece-of-shit producer Rick Moreweather (Ray Romano).

Miles is OK. Pathetic, chasing a separated wife and kid, but clearly more cunning than his job needs him to be and more optimistic than Chili. The mick accent renders his attempts at both menace and persuasion comical.

Ray Romano is loathsome, a humorless whiny Sienfeld-wannabe; but that's actually working here, Rick is not funny, he's sad and cowardly, the shittiest kind of Hollywood hack. And so Ray Romano suddenly fits. You can believe he's a man with no principles, with a rotten onion for a heart. His voice is still awful, and his Just For Men dyed beard and hair are preposterous.

They moved the mob's base from Miami and Vegas to a shithole casino outside Vegas. The mob boss Amara is interesting, but entirely too much time is spent on her pathetic crew, and Yago the "nemesis" our legbreaker isn't really needed. April Quinn (Megan Stevenson) is cute as the executive, and how they get her to do the job is good and dirty. Sidekick Louis (Sean Bridgers) is a Coen Bros type: Withdrawn & goofy one second, charming the next, instant murderous psychopath the next.

And: Peter Stormare as Hafdis the, uh, wise hobo when we first meet him. Stormare is more familiar to Elder Scrolls Online players as Jorunn the Skald King. I'm eager to do some draugr-slaying quests for ya, King.

As of S1E04, this is fun. I'd rather have another proper Elmore Leonard show, it's been too long since Justified ended. But as dark comedy loosely based on Elmore's themes, it's good.

★★★★☆

Functional Thinking Books

Resize Windows with Applescript

So I downloaded it with youtube-dl (after more annoyances with MacPorts updates ) and a helper script ytplaylist: [updated 2019-06-22]

youtube-dl -i --yes-playlist --restrict-filenames --recode-video mp4 -o '%(playlist)s/%(playlist_index)s-%(title)s.%(ext)s' "$1"
osascript -e 'display notification "Youtube playlist downloaded"'

where $1 is the actual playlist URL; "show video list" under the video player or pick from DNA Lounge playlists

Now I have a folder full of properly-named videos. VLC can be opened from the shell with:

~/Applications/VLC.app/Contents/MacOS/VLC jwz_mixtape_200 &

Frustrated by VLC constantly resizing, I then ignored the problem for most of the morning, finally wrote resizeWindow.applescript:

#!/usr/bin/osascript

global appName
global windowX, windowY, windowW, windowH

on run argv
    parseArgs(argv)
    wrapCoords()
    resizeWindow()
end run

on parseArgs(argv)
    set argc to (count of argv)
    if argc ≠ 5 then
        display dialog "Usage: resizeWindow.applescript APPNAME X Y W H"
        error number -128 -- User canceled
    end if
    set appName to item 1 of argv
    set windowX to item 2 of argv as number
    set windowY to item 3 of argv as number
    set windowW to item 4 of argv as number
    set windowH to item 5 of argv as number
end parseArgs

-- Wrap negative coords around to other side
on wrapCoords()
    tell application "Finder"
        set desktopBounds to bounds of window of desktop
    end tell
    if windowX ≥ 0 then
        -- no changes
    else
        set windowX to windowX + (item 3 of desktopBounds) - windowW
    end if
    if windowY ≥ 0 then
        set windowY to windowY + 24 -- menu bar
    else
        set windowY to windowY + (item 4 of desktopBounds) - windowH
    end if
end wrapCoords

on resizeWindow()
    tell application "System Events"
        tell process appName
            set frontWindow to the first window
            set appPos to position of frontWindow
            set appSize to size of frontWindow
            -- display dialog ("front window of " & appName & ": " & (item 1 of appPos) & ", " & (item 2 of appPos) & ", " & (item 1 of appSize) & ", " & (item 2 of appSize))
            -- display dialog (appName & " at " & windowX & ", " & windowY & ", " & windowW & ", " & windowH)
            set size of frontWindow to {windowW, windowH}
            set position of frontWindow to {windowX, windowY}
        end tell
    end tell
end resizeWindow

Now I can just leave it running to update every 5 seconds:

while true; do resizeWindow.applescript VLC 0 -64 720 640; sleep 5; done

Slight annoyance, sometimes it's still expanding the size further down than it should until I size it smaller, and then it works. Fucking software.

I don't know that what I've done is productive in any way, but I have my MTV.

The kids are disco-dancing
They're tired of rock and roll
I try to tell them, "Hey, that drum machine ain't got no soul"
But they don't want to listen, no
They think they've heard it all
They trade those guitars in for drum machines and disco balls
We can't rewind now; we've gone too far
Internet killed the video star
—The Limousines, "Internet Killed the Video Star"

Advent of Code 2018

I don't know how much I'll do this year, but I'll do it in Chicken Scheme as a way of improving the text-processing and math functions in my library, and publish it. Source is now on gitlab, above.

The competitive part is still bullshit, the single starting time of midnight EST is utterly useless to most people who could participate; even in Pacific time, that's late at night. On my quiet night schedule, that's way too early to wake up; in Europe, that's 04:00 or so, long before coffee could percolate. Mid-workday for Korea & Japan. So, only for Finns and Russians?

Blueholme Referee Repository

Just a collection of the charts from Blueholme, plus a new chart listing all the monsters with Size, AC, HD, Movement, Damage, Align, Treasure, Page; that's super helpful for a game with some weird monsters.

The front and back covers don't show up in Preview or Skim on Mac, only in Adobe's reader (ugh), but the clean art version does on page 3, and the interior seems to render fine. There's some scaling & half-toning artifacts in a few pieces, some of which are rendered differently but also wrong in Adobe. I think the editor needs to ship printable and screen versions.

There may be too much whitespace and large fonts. Holmes was Futura 10 or 11pt, mostly tightly-packed paragraphs; maybe that's too small for quick reference sheets, but this goes too far the other way. The art's great, though. Like the main book, it has the tone of the original Holmes boxed set, but modern artists.

You could make a home-made Referee screen out of these pages, but you'd have to do some editing: Pages 16-17 are the combat charts, but Turn Undead is buried with the classes on page 7, and page 11 has the movement & getting lost charts.

★★★½☆: It's a buncha charts.

Coincidentally, I'd been thinking about and writing some notes for using Blueholme in a Discord or Skype chat game, so this comes at a good time.