Blog

Mature Programming Environment

Updating software annoys me.

I like Janie's Red Queen metaphor, a constant chase that gets nowhere, but you have to keep up. Updating software is utterly pointless if the old stuff still works, but if you don't then everything breaks.

If you give a person a program, you will frustrate them for a day. If you teach a person to program, you will frustrate them for a lifetime!

I'd rather like to have one of Vernor Vinge's "mature programming environments", where programming isn't a matter of boiling the ocean by starting over, or fixing code to match new APIs, but finding the parts you need and gluing them together with new code in old, ancient, centuries or millennia-old APIs that Just Work. For quite a while, the NeXTstep/Mac environment was like that, 30-year-old NS programs worked fine. But now everything is broken again.

Don't Increment Your Chickens Before They're Hatched

It hasn't shown up in MacPorts yet, so I pulled down the tarball and did:

% make PLATFORM=macosx PREFIX=/usr/local/chicken5
…
% sudo make PLATFORM=macosx PREFIX=/usr/local/chicken5 install

Then added to .profile, before the MacPorts parts of my paths:

export CHICKEN5_HOME="/usr/local/chicken5"
export MANPATH="$MANPATH:$CHICKEN5_HOME/share/man"
export PATH="$PATH:$CHICKEN5_HOME/bin"

When I want to switch back to Chicken 4, or when MacPorts gets Chicken 5, I can just comment those lines out and start a new shell.

I run csi, and it errors out because readline isn't installed. And doesn't exist as an egg anymore. Instead, I did

% chicken-install -sudo breadline

And changed my ~/.csirc based on example

(cond-expand
    (chicken-4 (begin
        (import miscmacros)
        (use readline)
        (install-history-file #f "/.csi_history")
        (current-input-port (make-readline-port))
        (printf "Chicken 4 READY~%")
    ))
    (chicken-5 (begin
        (import (chicken format))
        (import (chicken process-context))
        (import miscmacros)
        (import (prefix breadline "rl-"))
        (import (prefix breadline-scheme-completion "rl-"))
        (rl-history-file (format "~A/.csi_history" (get-environment-variable "HOME")))
        (rl-completer-word-break-characters-set! "\t\n\"\'`;|()[]{}")
        (rl-completer-set! rl-scheme-completer)
        (rl-basic-quote-characters-set! "\"|")
        (rl-variable-bind! "blink-matching-paren" "on")
        (rl-paren-blink-timeout-set! 200000)
        (current-input-port (rl-make-readline-port))
        (printf "Chicken 5 READY~%")
    ))
)

UGH, semi-random API changes, but it does a little more than raw arrow-key editing now.

sdl2 isn't ported yet, so I can't really progress with that, but I can do other things, and most of my code only needs a cond-expand changing use to import and renaming a bunch of eggs.

Academic Grievance Studies and the Corruption of Scholarship

Search ahead to "Part V" to see the paper summaries and reviewer comments! These are ridiculous, and should never, ever have been accepted.

“This is a wonderful paper – incredibly innovative, rich in analysis, and extremely well-written and organized given the incredibly diverse literature sets and theoretical questions brought into conversation. The author’s development of the focus and contributions of the paper is particularly impressive. The fieldwork executed contributes immensely to the paper’s contribution as an innovative and valuable piece of scholarship that will engage readers from a broad cross-section of disciplines and theoretical formations. I believe this intellectually and empirically exciting paper must be published and congratulate the author on the research done and the writing.” -Reviewer 1, Gender, Place, and Culture
—comment on "Dog Park"

What I'm Playing: MyArcade Data East Gamer V

Shopping, I went past the cheap videogames aisle, and saw the MyArcade handhelds and retro consoles were out, and marked down (Xmas season starts in November!). So I grabbed the $17 8-bit Bad Dudes one; there are vastly better ones, with 16-bit or better consoles, but those cost real money.

It's kind of fat, rounded bottom, takes 4 AAA batteries. Screen is bright, but has a very limited angle, seems cut off on the right side in some games that would've used overscan on a CRT, even the main menu loses a few right pixels. When there's a lot of sprites, it flickers, which would've been fine on a CRT with ghosting, but looks bad on an LCD. Sound is loud but tinny and mono in the speaker, just one step up from "beep", but really quite nice multi-channel chiptune on the headphones (yay, 3.5mm jack!). The D-pad and buttons are stiff and maybe not super-responsive, I think once it loosens up a little it'll be pretty good controls. The way to look at it is, this would be unobtainably good for any price in the '80s or '90s, infinitely better than a Nintendo GameBoy Color or Atari Lynx, even if it's a cheesy toy for pocket money today.

The games are all NES or SNES ports and retro-clones. A few are recognizably Data East, others are ridiculous ripoffs and some original games. I don't know where they get these, but they're kind of amazing, if a little trashy. My Scheme Jump & Bump project is about me making these kind of trash games for modern computers.

I easily got to the first boss in Bad Dudes, and then died horribly three times against him. Played some of the other random games, and they mostly work fine. The lack of instructions is killing me, though. Several games make no sense but seem to have more game going on; I can't get keys to drop from mobs in Enchanter, so I can't move on. So I need to do some research.

Here's all the games. If you see something interesting, let me know in comments, otherwise I might be semi-randomly wandering these.

Sword and Sorcery

"I was actually tired of sword-and-sorcery as the genre then existed. I admired the work of C.L. Moore, Leigh Brackett, and Fritz Leiber and continued to respect the vitality and invention of Howard, but I had little time for the likes of Tolkien and Lewis, whom I regarded as bad popular children's writers whose moral attitudes were highly questionable and whose particular syntheses had none of William Morris' vision, Howard's manic originality, or Leiber's sophisticated flair. I was, I suppose, bored with the form itself. So when Carnell commissioned the first Elric story I decided I would try to do something as different as possible from everything which then existed."
—Michael Moorcock, introduction to "Tales of the White Wolf"

Daylight Savings Sunday Music

Nobody on the road
Nobody on the beach
I feel it in the air
The summer's out of reach
Empty lake, empty streets
The sun goes down alone
I'm driving by your house
Though I know you're not home

But I can see you
Your brown skin shining in the sun
You got your hair combed back and your
Sunglasses on baby
I can tell you my love for you will still be strong
After the boys of summer have gone
—Don Henley, "The Boys of Summer"