- Mirror to the Sky, by Yes: new Yes in 2023. So far sounds really good.
- The Yes Album, by Yes: old Yes in 1971.
- Clockwork Angels, by Rush: Probably the last Rush we'll ever get.
- Noise Floor, by Spock's Beard
Blog
What I'm Watching: Wednesday
I dunno why I only watched E01 when it came out, catching up now. And mostly it's fine. Sometimes excellent, but suffers from Netflix Wants Eight Episodes Syndrome, where it could be a good 90-120 minute movie instead.
It's very very blatantly Harry Potterage. The spooky old castle school Nevermore, with secret passages, four cliques (Fangs, Claws, Scales, and Stoners, but also shapeshifters & psychics like Weds). The "Normie" (ruder but less obscure than Muggle) town where they sneak off for forbidden beverages (coffee instead of butterbeer), tho you rarely see them drink. There's places it's shot-for-shot ripping off Chris Columbus, but to be fair Columbus ripped off Tim Burton.
Like HP, you never see the supposed students in class, except rarely in Herbology, er, "Care of Carnivorous Plants". Which is Morticia's thing, it's odd to see it as a whole course here.
Composer Danny Elfman & producer Tim Burton are somewhat more restrained than usual, it's gothy but not goofy like his later stuff. I'm disappointed and surprised the episode in a circus (inexplicably present decades after touring circuses ended) didn't get all surreal and have chases thru halls of mirrors and dark rides while camera tricks simulate hallucination! THIS IS YOUR MOMENT, and you just miss it entirely.
Writing & direction are all over the place. Some eps are gothic mystery, very Poe-like. Some have gruesome action scenes, very nice. Others are wacky school hijinks like discovering the secret clubhouse. The psychiatrist visits are '60s sitcom trash, with a few wisecracks by Wednesday. In the last 4 eps, repeatedly: Wednesday barges into a room, makes accusations or demands, they turn out to be false or stupid, proven in the next scene or so. Sometimes she's assaulted with no fighting back. I expect more caution, forethought, and actual violence (not just threats) from an Addams.
Wednesday (Jenna Ortega) is 20 playing 16, and she's fine at it, very cute. Fits her ancestry by way of Gomez. She's maybe a little too stiff, classic Weds was sweet like arsenic, not bitter like cyanide. But awkward teenage serial killer years. Gotta love 'em.
Thing is fantastic. He's clearly the best actor on the show, and the real hero. They give good long closeups of his scars and stitches. He's never looked so alive. Just perfect.
I'm shocked to see myself write this, but Fred Armison as Uncle Fester was actually good. I loathe Fred, he's a black hole where humor goes to be sucked out of the Universe, he's grating, whiny, and hideously ugly in a way only a truly rotten Human monster could ever be… And the Fester makeup and writing, and his delivery, were… Not Jackie Coogan good, but acceptable. How. What dark rituals were enacted to make Fred act, for once in his fucking miserable object lesson of a life‽
Some actor casting…
Would-be boyfriend Tyler (Hunter Doohan) is 28 playing, uh, 30? He's creepy in the way Matthew Lillard was in Scream, and this (and his ability to never be useful in an emergency) is why I pegged him early as the monster.
Enid & Xavier (ludicrously pronounced "Eks-ave-ee-er" rather than "havv-iyeh" or "szav-iyeh" like cultured people do) are played by young-looking 21-ish kids, but many other "students" are in late-20s and it shows.
Luis Guzman is adequate at the romance with Morticia, clearly dotes on Weds, but he's ugly, unsuave, physically unfit to be sword-duelling Gomez Addams, and is 20 years older than Catherine Zeta-Jones even tho supposedly they were students together. John Astin & Raul Julia were the ideal any Gomez should aspire to. There's a million Mexican telenovela actors who could do this role better.
★★★½☆ So uneven I don't respect it, but I watched and so should you.
What I'm Watching: Silo
Over on "TV" (Apple TV+, Apple now believing they own all proper nouns), an adaptation of Hugh Howey's Wool (2011) and sequels. Currently S1E01-2 are out, and they're trickling out more every Friday. That's how they get you to keep a "TV" subscription.
"We do not know why we are here.
We do not know who built the Silo.
We do not know why everything outside the Silo is as it is.
We do not know when it will be safe to go outside.
We only know that day is not this day."
And they really try not to know. They live in a bunker after some apocalypse, look at projected screens of a wasteland from a single camera. Climb hundreds of floors of stairs between management and engineering, so really not much has changed.
You know what's weird? They have wool (sheep? Or something else?), linen, leather. Coffee, beer, bread & cake. We never see (in eps 1-2) any farms, real plants, or animals. Maybe they're somewhere, but oxygen generation inside doesn't make sense from what's shown.
I've read the short story and a bit of the first fix-up novel, but I'm a little confused. There's another series, Jeanne DuPrau's The City of Ember (2003), which had a really trashy movie starring Bill Murray; the book (and sequels? I didn't read them but I think I should) was much better. And it addressed their very limited resources immediately and constantly. Short story Wool didn't cover this, maybe the fix-up and later in the show does?
Anyway. Sheriff Holston (David Oyelowo) & wife (Rashida Jones) have been given breeding permission, which they go at; until her frustrating day job in IT gets her into forbidden knowledge, and we… don't find out what's outside. Then we bounce between flashbacks and investigations a couple years later, because no modern writer's able to stay on one timeline anymore; I shouldn't complain, Ember's dumb movie added a giant monster.
The sets are grim industrial awfulness, a little too blatantly greenscreen CGI, where a practical set, model, and matte painting would've looked better (The Machine in particular). Most of the people in the first two eps are well-acted, tho I'm not always sure how much the Mayor (Geraldine James) knows; is she in on it? She's reading old journals, doing all but heresy to understand the Silo, but her reactions don't always match. She reminds me greatly of "Mom" from Futurama before she dropped her façade.
The premise is great, but having killed & retired a few people right off, there's only Mom and engineer Juliette (Rebecca Ferguson) left. I want to see a lot more development of the background as this goes on, and I suspect it's going to be more political infighting instead. We'll see.
Probably worth starting, but you could also wait a bit and binge when it's further along.
What I'm Playing: Honkai Star Rail
- Official site
- mewodb resource list: Including the gift codes, enter those on the official site.
- Videos: Volkin, SevyPlays
(screenshot gallery at bottom)
In short, it's a space fantasy RPG, turn-based combat, gacha but generally free-to-play (F2P) friendly. I'm running it on iPad, but it also has Android, Windows, soon Playstation. Like the company's previous two games, Honkai Impact 3rd & Genshin Impact, it's very pretty. Unlike them, it's turn-based combat, with heavy emphasis on elemental rock-paper-scissors, getting team skill synergies, and better gear ("light cones" are weapon buffs, "relics" are armor).
It has some of the best writing I've seen in a game. There's in-universe lore, letters between characters, chat logs, database dumps, a ton of weird people with semi-branching storylines. Occasionally some really serious consequences; telling the truth might set someone free or destroy them, I've seen both happen. Could I have avoided a crushing, cruel fight if I'd been more subtle? There's also a lot of comedy, and references to science fiction and other culture. The trash cans are more than they seem.
HI3 was all waifus, very blatantly taking advantage of Chinese & Japanese otaku. GI was a little less predatory and monotone, tried a little harder at the global audience, but then had the most annoying mascot ever, Paimon, that did all your talking for you. HSR has found a nice balance, there's a lot of hot female chars, but also boys (alas, all twinks; none have body or facial hair or any build other than "teenage swimmer" except a couple older NPCs), and the game tends to throw opposite gender flirt at your main character; I'm glad I chose the male MC.
They've learned how to make maps. HI3 had very narrow corridors to do linear action fights in. GI has a vast, largely empty and samey world to scrape over for materials, and then closed mini-dungeon arenas to do jumpy puzzles & action fights in. HSR maps are fairly small, mostly interiors or box canyon mazes, with connected zones at a couple places, but they're much more interesting than the HI3 maps, it's worth going back a few times to find all the secrets, kill the special monsters. Many HSR maps have 2-3 floors, and switches for different paths, just like a real RPG.
The daily grind is a mix of little fetch quests and other tasks in explored zones, Simulated Universe which is a "roguelite" series of fight rooms & random buffs, Forgotten Hall boss fights, Calyx Trees where you grind mobs for specific materials.
If you overlevel the mobs, you can just set combat on auto, 2X speed, and it'll be fine. As soon as you hit any kind of elite or boss, or near your level, that stops working, you need to KNOW how elements interact, PLAN your fights, and use skills intelligently. Read the hints as they pop up, and the books in your database/library, it's all explained.
HSR owes an enormous visual & story debt to Galaxy Express 999 (Matsumoto Leiji anime, willowy long-haired girls & emo boys in dusters with hair over their face, trains in space, vast cosmic threats treated as secondary to personal squabbles and little children, etc), with a much better thought out variant of the cosmology in HI3. Gameplay and visuals are extremely similar to Star Ocean, SMT Persona, some Phantasy Star (esp. the architecture). That's not to say it's a "ripoff", just fairly obvious about its influences. Weirdly just before this, I was playing Eroica, which is fantasy-steampunk-science fiction gacha game about a train on rails of light, fighting magically-corrupted monsters in turn-based combat with the same kind of time-to-strike counter; Eroica's much lower budget, but it was good training wheels for this.
The UI is pretty much the same as Genshin Impact's, but a little more smartphone-like; you hit the phone icon, and that gets you a single top-level menu (and your char holds up their phone! Every char has a custom phone skin/dangly bits). There's hot-buttons around the screen for specific parts of that menu. There's a soft joystick in the bottom left, action buttons bottom right, border's full of widgets and data like any MMO. Sometimes it's a little crowded, but not like a WoW raid screen.
Gacha
So, the gacha needs to be addressed. You get "star rail passes" which are for the normal banners, and there's a starting banner at 20% off (8 passes = 10 pulls). My advice is to spend the 40 passes for 50 pulls it gives you, just for the discount and one five-star char you get from it; I pulled Gepard the tank, not my favorite but useful later. Then keep pulling those passes on the regular banner after that, and enjoy whatever you get. Don't spend jade (F2P gems) or anything else on this.
There's also "Special Passes" for the event banner, currently Seele who is the best single-target DPS char so far, and I loved the version of her in HI3, so I want her back. If you play intensely, and spend all your jade on it, you may be able to hit the "soft pity" level where you have an increased chance to get her. Even if you don't, the pity apparently carries over to the next event banner. I'm planning on doing everything F2P to get her, and then if that doesn't work, I'll think about spending a little real money on it; I have paid for the $5 monthly pass, so I'll have some paid gems. I'm not willing to spend $200+ to guarantee getting her like some streamers have!
You don't need any of these. The main character (Trailblazer, same whether male or female) is actually pretty good as physical DPS/tank, and after an event becomes a top-tier fire DPS/tank (Eroica did the same thing, but without the choices! Sei is the best tank in the game). The free shielder (March 7th), healer (Natasha), AOE (rock star Serval), hunter (the very boring Dan Heng), etc. are more than good enough to get you through all the story and all but the very hardest optional bosses. Don't waste money thinking you need a better character; only spend if you can afford it and really want a specific char. I don't believe in rerolling, I think it's a very stupid & anti-fun waste of time, and this game takes a couple hours to reach the point where you could reroll hoping for a 0.3% chance at a specific char.
Rating
I've spent, uh, rather too much time in game; since Tuesday, I've done consistently 4-8 hours per day, total 27 hours. That's clearly deranged; I'd like to get it down to ½hr daily, 2hr weekends. But I'm now on the 3rd world! So that should calibrate your JRPG-grind meter. Like all live service games, it'll presumably keep getting material until we don't pay/play anymore, HI3's still supported after 7 years. Shockingly HSR's not as CPU/GPU/battery-burning as others, a couple hours is <25% battery used.
I have one world left to slowly explore and then nothing but dailies to do until the next update (maybe in May when the next banner starts). If you're less obsessive about it, this could be months of game right at launch, and you'd never run out.
★★★★★ absolutely must-play if you like JRPGs. Don't spend money until you know you like it.
Screenshots
What I'm Watching: Florida Man
I managed to watch a TV ('flix) show!
- Florida Man (2023): Produced by Jason Bateman, so you should know what you're getting into, but this is more funny white trash film noir than outright comedy.
Mike Valentine (really? Star Wars-level joke names for romantic hero? played by Édgar Ramírez) is a degenerate gambler ex-cop in Philly working for Moss Yankov (yes, names are this bad, slow growing parasite Eastern European trash mobster, by Emory Cohen), and banging his moll Delly West (dolly, Mae West, we get it, played by model Abbey Lee, but she's too scrawny, vapid, and Millennial to pull the role off; she tries "sultry" and it's just "waif needs a cookie") and holding a torch for his ex-wife Iris (oddly, no obvious connotation? played by Lex Scott Davis, hot but mean). Delly runs off to Florida, Moss sends Mike to catch her. Down there, they get tangled up with Mike's father "Sonny" (inverted parental relationship, Anthony LaPaglia), and recovered pirate treasure.
So there's dense setup in the first episode… and then there's 4 eps of screwing around, not getting to the point, 1 ep of actual plot(!), 1 ep of resolution. There's a lot of fun but irrelevant side plots, the EMT & the tweaker, and the dumb vacationing deputy who has increasingly bad days down there, and the honest but simple-minded deputy Andy (not Taylor or Clutterbuck, but meant to evoke that incompetence, played a little too broadly by Paul Schneider of Parks & Rec), and the old hit man Dutch (Ritchie Coster, piece of shit not-really-actor who appears in every bad remake, but he's adequate here, even has some fiery moments!), and the motel owners, and I haven't even got into the sister's family drama they all keep wandering thru. But very quickly you can see they just kept writing junk to fill episodes until someone told them to stop.
If this had been edited, and cut down to just what it needed, it'd be a brilliant Jim Thompson-level Grifters kind of movie of betrayal and femme fatales and "Valentine" thinking more with his other brain. But it's not, so it meanders around and you lose sight of actual plot until it sneaks back in at the end.
★★★½☆
Gretchen, Stop Trying to Make ALAC Happen!
I have a bunch of FLAC files from an album I bought, it was that or low-quality MP3. iTunes ("Music.app") doesn't read FLAC, even tho it's the industry standard for lossless audio.
So I fought with ffmpeg (each "f" stands for "fuck you"), and it converted about half of them into usable files.
Eventually I found XLD X Lossless Decoder: Lossless audio decoder for Mac OS X
Had to right-click, Open to get past Mac Gatekeeper, ugly little program, been in development forever, but it works perfectly. Converted a directory full of flac into m4a, then just dragged them into iTunes and now have music where I want it. If I'm real excited for it, I could downgrade them to AACs, but eh good enough for now.
Everyone be sure to tell Apple that ALAC is stupid and not going to happen.
(the ffmpeg I did was:
for f in *.flac; do
echo "$f"
ffmpeg -i "$f" -c:a alac -c:v copy -acodec alac "${f%.flac}.m4a"
done
but now I really don't wanna hear about how to fix that.)
Angry Wires Monday Music
- Chasing Ghosts, by Stabbing Westward
- MMXII, by Killing Joke
- Full Spectrum Dominance, by Killing Joke: video from new EP
- More to Hell, by Psyclon Nine: new to me, but they seem angry. Later: Meh, butt-alt-rock. I'm an atheist, and still think "there is no god!" is overly whiny for a chorus lyric. Dude, we know.
- Dark Skies, by Kevorkian Death Cycle: Later: Quite good! I should listen to more of KDC.
- Mechanical Soul, by Front Line Assembly
- Last Station, by Leæther Strip
Vim the Next Generation
So I figured I should modernize my Vim skills, from 1995 to 2023. A lot's changed since I last configured Vim.
Installed a modern MacVim, in my case sudo port install MacVim
. It's launched with mvim
, but I just change alias v=mvim
in my .zshrc
In the code blocks below, ~%
is my shell prompt, ## filename
shows the contents of a file, cat into it or whatever. Neither of those lines belong in the file!
To start, I want to use vim9script. So my old .vimrc now starts with that mode command, then I changed all my comments from "
to #
. Not much else had to change. The way to detect MacVim etc is clearer now, and I can get ligatures from Fira Code!
Syntax highlighting files can just be dropped in ~/.vim/syntax/
Update 2023-04-11: added statusline highlight colors, under syntax loading
## .vimrc
vim9script
# Mark Damon Hughes vimrc file.
# Updated for Vim9, 2023-04-09
#
# To use it, copy it to ~/.vimrc
# Note: create ~/tmp, ~/.vim, see source commands below.
set nocompatible # Use Vim defaults (much better!)
filetype plugin on
set magic
set nrformats=
set errorbells
set nomore wrapscan noignorecase noincsearch nohlsearch noshowmatch
set backspace=indent,eol,start
set nosmarttab noexpandtab shiftwidth=8 tabstop=8
set encoding=utf-8 fileencoding=utf-8
set listchars=tab:__,eol:$,nbsp:@
set backup backupdir=~/tmp dir=~/tmp
set viminfo='100,f1,<100
set popt=header:2,number:y # 2=always
set tw=80 # I use this default, and override it in the autogroups below
# ctrl-] is used by telnet/ssh, so tags are unusable; i use ctrl-j instead.
set tags=./tags;/
map <c-j> <c-]>
# Don't use Ex mode, use Q for formatting
map Q gq
map <Tab> >>
vmap <Tab> >
map <S-Tab> <<
vmap <S-Tab> <
# Always have syntax highlighting on
syntax on
# https://github.com/mr-ubik/vim-hackerman-syntax
# changed:
# let s:colors.cyan = { 'gui': '#cccccc', 'cterm': 45 } " mdh edit
# let s:colors.blue = { 'gui': '#406090', 'cterm': 23 } " mdh edit
source $HOME/.vim/syntax/hackerman.vim
set laststatus=2 # 2=always
# %ESC: t=filename, m=modified, r=readonly, y=filetype, q=quickfix, ff=lineending
# =:right side, c=column, l=line, b=buffer, 1*=highlight user1..9, 0=normal
set statusline=\ %t\ %m%r%y%q\ [%{&ff}]\ %=%(c:%02c\ l:%04l\ b:%n\ %)
set termguicolors
hi statusline guibg=darkblue ctermbg=1 guifg=white ctermfg=15
hi statuslinenc guibg=blue ctermbg=9 guifg=white ctermfg=15
hi Todo term=bold guifg=red
# Use `:set guifont=*` to pick a font, then `:set guifont` to find its exact name
set guifont=FiraCode-Regular:h16
if has("gui_macvim")
set macligatures
set number
elseif has("gui_gtk")
set guiligatures
set number
endif
set guioptions=aAcdeimr
set mousemodel=popup_setpos
set numberwidth=5
set showtabline=2
augroup c
au!
autocmd BufRead,BufNewFile *.c set ai tw=0
augroup END
augroup html
au!
autocmd BufRead,BufNewFile *.html set tw=0 ai
augroup END
augroup java
au!
autocmd BufRead,BufNewFile *.java set tw=0 ai
augroup END
augroup objc
au!
autocmd BufRead,BufNewFile *.m,*.h set ai tw=0
augroup END
augroup php
au!
autocmd BufRead,BufNewFile *.php,*.inc set tw=0 ai et
augroup END
augroup python
au!
autocmd BufRead,BufNewFile *.py set ai tw=0
augroup END
augroup scheme
au!
autocmd BufRead,BufNewFile *.sls setf scheme
autocmd BufRead,BufNewFile *.rkt,*.scm,*.sld,*.sls,*.ss set ai tw=0 sw=4 ts=4
augroup END
Package Managers & Snippets
Next I need a package manager. I've settled on vim-plug as complete enough to be useful, not a giant blob, and is maintained. There's at least 7 or 8 others! Complete madness out there
(I've already picked one, I don't need further advice, and will actively resent you if you give me any. I'm just pointing at the situation being awful.)
Install's easy, drop it in autoload, mkdir -p ~/.vim/plugged
The first thing I want is a snippet manager, and SnipMate's the best of those. Edit .vimrc
at the end, set your "author" name, it's used by several snippets.
## .vimrc
call plug#begin()
Plug 'https://github.com/MarcWeber/vim-addon-mw-utils'
Plug 'https://github.com/tomtom/tlib_vim'
Plug 'https://github.com/garbas/vim-snipmate'
Plug 'https://github.com/honza/vim-snippets'
g:snips_author = 'Mark Damon Hughes'
g:snipMate = { 'snippet_version': 1,
'always_choose_first': 0,
'description_in_completion': 1,
}
call plug#end()
Next part's super annoying. It needs a microsoft shithub account; I made a new one on a throwaway email, but I don't want rando checkouts using my real name. includeIf lets you choose between multiple config sections, so now I have:
## .gitconfig
[include]
path = ~/.gitconfig-kami
[includeIf "gitdir:~/Code/"]
path = ~/.gitconfig-mark
## .gitconfig-kami
[user]
name = Kamikaze Mark
email = foo@bar
## .gitconfig-mark
[user]
name = Mark Damon Hughes
email = bar@foo
~% git config user.name
Kamikaze Mark
~% cd ~/Code/CodeChez
~/Code/CodeChez% git config user.name
Mark Damon Hughes
But shithub no longer has password logins! FUCK.
~% sudo port install gh
~% gh auth login
Follow the prompts and it creates a key pair in the system keychain. I hate this, but it works (on Mac; Linux install the package however you do, it works the same; Windows you have my condolences).
Now vim, :PlugInstall
, and it should read them all. I had to do it a couple times! Then :PlugStatus
should show:
Finished. 0 error(s).
[====]
- vim-addon-mw-utils: OK
- vim-snipmate: OK
- vim-snippets: OK
- tlib_vim: OK
Let's create a snippet!
~% mkdir .vim/snippets
## .vim/snippets/_.snippets
snippet line
#________________________________________
snippet header
/* `expand('%:t')`
* ${1:description}
* Created `strftime("%Y-%m-%d %H:%M")`
* Copyright © `strftime("%Y")` ${2:`g:snips_author`}. All Rights Reserved.
*/
And if I make a new file, hit i
(insert), line<TAB>
, it fills in the snippet! If I type c)<TAB>
, it writes a copyright line with my "author" name; it's highlighted, so hit <ESC>
to accept it (help says <CR>
should work? But it does not). Basically like any programmer's editor from this Millennium.
Update 2023-07-24: Added header
, which is my standard document header, expand is filename with extension, rest are self-explanatory. Sometimes I add a license, which SnipMate preloads as BSD3, etc.
Use :SnipMateOpenSnippetFiles
to see all the defined snippet files.
File Tree
NERDTree seems useful; read the page or :help NERDTree
for docs. Add another plugin in .vimrc
just before call plug#end()
, do a :PlugUpdate
, and it's that easy. But I want to hit a key to toggle the tree, and another key to focus the file, which takes me into the exciting world of vim9 functions.
## ~/.vimrc
Plug 'https://github.com/preservim/nerdtree'
# open/close tree
def g:Nerdtog()
:NERDTreeToggle
wincmd p
enddef
nnoremap <F2> :call Nerdtog()<CR>
# focus current file
nnoremap <S-F2> :NERDTreeFind<CR>
Update 2023-04-11: In NERDTree, on a file, hit m
for a menu, and you can q
uicklook, o
pen in Finder, or r
eveal in Finder, and much more. Doesn't seem to be a right-click or anything functionality, so it was not immediately obvious how to make it open my image files, etc.
And I think that's got me up to a baseline modern functionality.
Scheme Parent Protocols
Here's a subtle point of using Scheme (Chez, R6RS) records with inheritance:
;; creates a record, two default fields
(define-record-type Foo
(fields (mutable x) (mutable y))
(protocol (λ (new) (λ ()
(new 1 2) )))
)
;; creates a subtype, one specified field
(define-record-type Bar
(parent Foo)
(fields (mutable z))
(protocol (λ (super-new) (λ (z)
(let [ (new (super-new)) ]
(new z) ))))
)
(define b (make-Bar 3))
(Foo-x b)
1
(Foo-y b)
2
(Bar-z b)
3
The "new" your subtype protocol (constructor, in any OOP system) gets is a wrapper function that calls the parent protocol, and returns your actual "new". If you don't have a protocol, you just do (make-Bar 1 2 3)
and that works.
It's a little annoying that define-record-type doesn't copy accessors forward, leading to either that mess of Foo-x/y, Bar-z, or a long list of (define Bar-x Foo-x)
etc., but if I wanted a real object system I already have one. In my use case records are faster, I just didn't understand this quirk, and the docs don't help by calling the constructors "n" and "p".