Blog

Neon Wednesday Music

Several of these /via xtheo, which is a fantastic synthwave & ’80s tumbleblog/moodboard.

Note with Soundcloud, you need to hit the hamburger menu at the bottom right of the page, and turn off “Autoplay Station” or it’ll randomly insert other artists. Which might be what you want other times, but not when listening to one artist. Bandcamp works like a sane thing.

Y C?

C has the great virtue that most computers have a C compiler installed or can get one from the vendor, and by typing:

% clang -o thing thing.c # or gcc if you must.

You get a binary that’ll run on that platform. If you wrote your code sanely, you can recompile it on every major platform with no changes. If you find a place where a platform’s different, you can add #if to fix that.

Contrast with every other systems language:

  • Do you have a compiler installed?
  • Is it portable?
  • Can you even fix non-portable areas?
  • Can you make a binary an end-user can run?
  • Can you call other libraries?

In C, the answer is always yes. In any other, it’s “probably not, or only with great effort”.

Someone was recommending Ada. It’s not in standard gcc. You have to install something called “GNAT”:

% sudo port install gnat-gcc
#  Ada is self hosted (http://en.wikipedia.org/wiki/Self-hosting)  #
#  You need to install an existing Ada compiler and then choose    #
#  an appropiate variant. For more info use:                       #
#  port variants gnat-gcc                                          #
% sudo port variants gnat-gcc
gnat-gcc has the variants:
   ada: Uses the MacPorts Ada (https://www.macports.org/) compiler to bootstrap!
   gnatgpl: Uses GNAT/GPL compiler (http://libre.adacore.com) to bootstrap!
   gnuada: Uses the GnuAda (http://gnuada.sourceforge.net/) compiler to
           bootstrap!
   macada: Uses MacAda compiler (http://www.macada.org) to bootstrap!
   odcctools: Use the odcctools instead of the system provided ones - does not
              work for x64 currently!

I dunno what to do here. MacAda hasn’t been updated since OS X 10.4, which was 2005. I don’t see any other ada in MacPorts. At this point I gave up and uninstalled everything. It’s not a working language.

Go is fine except that it’s a statically-compiled Java owned by Google, and every part of that is evil and wrong. The Rust Evangelism Task Force’s constant whining has made me unwilling to even give all those &’s a chance, they’re like digital Mormons. There’s nothing really wrong with D Language except that it’s not installed anywhere, and it’s no safer than C for a lot of extra typing.

C isn’t safe, but it’s fast. It’s pretty hard to use safely on large projects, but for small tools with static data buffers it’s fine. You take some tradeoffs for any language.

For high-level programming, I love Scheme and JavaScript, and there’s a ton of other good high-level languages. But if you need to write at the lowest level, and make it work everywhere, C’s the only rational choice.

Project UFO

Which one is correct? Let’s think about this from the other direction. Could we buzz another planet, today, in a way that makes “UFO sightings are ALIENS!” make any kind of sense?

Premise 1: It is incredibly unlikely that any “intelligent” species, having recently developed from hunter-gatherers to agriculture to technology in the span of a few thousand years, is smart enough to reach that technological stage without making their planet uninhabitable as we have, or discovering nuclear weapons and waging primitive tribal warfare with them. Even if anyone survives this century, or we colonize Mars, it may be centuries before we have this amount of available energy and economy again.

Therefore 1: Any “UFO” is probably from someone like us, just barely capable of doing it before going extinct. A last fireworks show before the Long Night.

This is going to take a while to work out. Get a coffee.

The nearest star is Proxima Centauri, 4.3 Light Years (272K AU, or 40.7 trillion km) away, and there is a potentially habitable planet.

If we stopped having wars (as if!), we’d have a few trillion dollar surplus; but I’ll just suppose we redirect no more than half our military budget. You could easily recruit volunteers for a life-long mission.

A spaceship capable of keeping people alive to get there would be, as a minimum, the size and complexity of a nuclear submarine, 6800 tons displacement, 128 crew, and maybe 100x the cost: $150 billion. Let’s handwave away with hydroponics and recycling that a real sub has to surface for supplies every 3 months, and the reactor lasts 30 years before it needs a refuel from recently-processed uranium. Neither are insurmountable engineering, the ship’s going to be unpleasant to live in but it’s about the best we can do.

SpaceX Falcon Heavy can lift 22.2 tons to orbit, displacement isn’t exactly dry weight but close enough for an estimate so that’s 300 launches at $100M+ each ($30 billion!) and then somehow assemble it in orbit.

Assembly would be easier if we had a space colony, with a giant machine shop, or even could still run the Space Shuttle (the space truck finally useful for something!), but that’ll cost even more money and time to set up. At least another $1 billion on moving enough workers through ISS to finish the thing.

Now we need a space drive. Here we’re kinda screwed.

As reference, see Atomic Rockets, menu at the bottom of the front page is where all the interesting stuff is, and in particular Slower Than Light. And a lot of the systems given there don’t work in reality, or we don’t have yet.

The “ALIENS!” enthusiasts are gonna say magic spacedrive, or fusion torch, or whatever, but we can’t make any of those, and fuel’s still not adequate for constant burn. You can’t magic up extra fuel. There is no such thing as faster than light travel. And see premise 2 later.

Bussard Ramjets would be perfect, even with the 0.12 C speed limit they would actually have… but we aren’t within decades of making one.

The nuclear reactor could power an ion drive, which we know how to make and fuel, very very low thrust but constant acceleration, scratch pad shows decades to reach halfway and start decelerating, except we can’t carry enough reaction mass and there’s none in deep space. Great for in-system maneuvering if you’re patient, useless for interstellar travel.

Orion drive, firing nuclear bombs at a heavy plate under your ass, is an act of war in our own Solar System, and a giant whiplash and cancer machine for the crew. 100% buildable, but nobody’s that stupid.

Charles Pellegrino’s Flying to Valhalla has a reasonable proposal for a sorta clean antimatter drive that’d get there in about 5 years, we just need to plate Mercury in solar cells to power particle colliders to make the shit. Avatar is a stupid, terrible, stupid movie, but Pellegrino designed the starship in it, which is perfectly reasonable. So, that’s a century or two off. No good.

Solar sails and laser launchers should work, and we can make these. We’ll know for sure in a couple weeks. Making them big enough for a huge ship (1000 km across!) is a challenge, but this is a matter of engineering, not fundamental science. This would take 20 years to reach halfway and 20 years to slow down, but some original crew and their kids could get there.

The lasers are the infinitely expensive part, where you can just sink all money forever into and not be done, but good news is A) they stay put in the Solar System, B) you can build and launch them one at a time over years as a satellite array zapping a lens which projects onto the sail, and C) they’re useful anti-asteroid tools (not by burning, but put another sail on an asteroid, and you can push it out of harmful orbits). The bad news is D) the people back home may be dead/forget about you/not be able/be unwilling to continue running them in 20+ years, and E) lasers in orbit can be turned against ground targets, almost literally a lightning bolt from “god” striking down your enemies. Quis custodiet…

Worst case is the lasers go quiet, and the laser sail ship becomes a much slower solar sail ship, which has to make a couple of slowdown passes at AC. If our recycling is good enough, maybe that works, maybe we die alone in the cold of space.

Now we’re cruising slowly thru the system, find a habitable planet. We can’t land the ship, but have a complement of drones that can fly into atmosphere. An unmanned drone could maneuver faster than any aircraft, and would even be hard for primitive radar to spot, just like our UFO stories.

But is there anyone there? Humans have existed for ~1 million years, about 5,000 of that civilized enough to be worth talking to, 100 years capable of radio, before probable nuclear or environmental extinction. Out of 3.5 billion years of Earth being a life-bearing planet so far, and maybe 6.6 billion years ahead where life can exist, that’s a 1 in 2 million chance of there being anyone to talk to.

The ship would be very visible, with sails out decelerating in, it’d be the brightest object in the sky. If the autochthons have radio, they can be called; but we’d have already heard their broadcasts here on Earth. Maybe blinking lights to talk to a more primitive culture? Land a drone and talk over a radio speaker?

There’s no easy way to land, abduct redneck autochthons, probe their cloaca-like entries, and return. Even if there was space for a couple Falcons as landers (strapped to the sides as maneuvering thrusters?), they’d need fuel to get back up. It may be possible to do a one-time water landing of the spaceship without killing everyone.

The only reason we would ever have gone there is to meet them and share information, tell them about our home and what we’re like. Show them Pulp Fiction and The Ramones and Heinlein’s The Green Hills of Earth. We wouldn’t be trying to keep it a secret, even aside from the physical impossibility of hiding the spaceship. Nor would the aliens cover it up; no matter what they are, we’d be the most important new source of science, technology, and entertainment.

But landing presents political problems even with public disclosure, they might go to war over who “gets the Earthers”, and possession is 9/10ths of interstellar law. Hopefully there’s some competent diplomats. There’s a lot more ways first contact can go wrong than anything in the flight. Really think very carefully before landing.

Colonization is difficult anyway, the atmosphere’s not likely to be the mix we need, the native life may be digestible into basic materials (most life is probably CHON ) but will lack any vitamins; we’ll need to keep eating hydroponics. We’d be immune to local viruses but might have no immune reaction to local bacteria & fungi equivalents, nor would any native life to ours. Staying in orbit or colonizing a barren rock is safer.

There will be no alien hybrids, no half-Vulcan Mr Spocks, and the aliens won’t look anything like a Human with a latex mask. First, do you consider mating with chimps, crocodiles, squids, tulips, or…? No, stop, I don’t wanna know! Baka! Ecchi!! But those are genetically related to us and yet no offspring is possible because we don’t have enough compatible genes. If panspermia is real, actual aliens would be more distantly related than fungi, and if not then it would be like screwing a rubber toy.

Conclusion 1: Any plausible alien spaceship scenario is going to look almost nothing like the UFO contact stories. We’d see them coming. They’d have to talk to us on the radio. No secret bases. No abductions. They’d be weird alien pop stars with agoraphobia and unused to gravity, constantly on PR tours and eating alien food because ours is useless.

Premise 2: So Pellegrino’s matter-antimatter drive? The point of Flying to Valhalla was that a near-C space drive is a one-shot planet-killing weapon. You’d briefly see an X-ray burst, then the ship’s front shield would shatter like a shotgun shell so you can’t just redirect it, then the planet would explode, in the space of hours or minutes as the ship chases up behind its light. And you could set one up with a deadman switch to kill whoever killed your planet.

Therefore 2: We’re not dead yet, and nobody’s contacted us to say “listen up, these are the rules!” Mutual assured destruction means they have to assume we’ll do it to them. They don’t have to fire first, just make sure we know the threat exists.

Conclusion 2: Nobody within 50 light years of us has advanced technology and has heard our radio signals (50 years there, 50 years for the weapon to come kill us).

Any other scenario isn’t science, isn’t even science fiction, it’s just fantasy. I like fantasy as much as the next guy who isn’t wearing a My Little Pony shirt, but it’s not real.

Evangelion Session 4: E11-12

Almost normal mecha show episodes: NERV HQ is shut down by unknown attackers by unknown means so everyone has to infiltrate the base and do a launch manually. Security really isn’t very good when the power’s down, three children are able to break into NERV. And then the orbital bombardment… Accurately understands the kinetic power of dropping things from orbit. The “miracle” of holding your hands up and wishing (OK, with an AT Field) is a little cutesy.

Maybe the NSA shut NERV down with STUXNET. You know in this setting the US espionage services would be incredibly perturbed at Japan having such an essential resource, we’ve seen “UN” ships with very obviously US-supplied Naval officers being pissy about it.

Misato’s backstory and damage, similar to Shinji’s and Asuka’s, leaves her easy prey for Gendo’s schemes. All the awkward people are excluded at the party, while the noisy ones make a mess. The phone call with Shinji and Gendo is just terrible, “Don’t put him through “. Then later, all Shinji notices is that this is the first time his father’s ever praised him. He can’t even notice Asuka’s abuse. There’s long stretches of Asuka screaming at people I just tune out (and I know perfectly well why I react that way from my own psychological damage).

The Angel designs in this one are very goofy, the Johnny Quest-looking spider with dripping eye-chor, and the orbital happy-face thing. As we’ll see later, there’s not a universal leader behind the Angels, Adamic life doesn’t seem to be able to coordinate or communicate with each other (and only occasionally with the Humans), they’re just trying to reach Adam or Lilith, so each one comes up with its own plan and carries it out.

While sailing to the Antarctic recovering the Spear of Longinus, Gendo & flunky muse that Humans survive because of Science. I think it’s more that a swarm of Humans collaborate, which beats the vastly superior solitaire Angels.

Evangelion Session 3: E08-10

Asuka strikes! The terror of the show. The worst Human who could possibly be one of the Children. Great T&A fanservice as long as you don’t mind her terrible shrieking voice or brutal abuse of everyone around. So, the kind any project attracts. “Why is she so bossy?” “Why are guys always so stupid and horny?!” Gee, Asuka, I dunno, maybe it’s because you strip-tease in front of them and then get mad when they look? It’s impressive how Rei just shuts her down, though: “I’ll be your friend if I’m ordered to.”

Once there’s more than one of the Children, the expression “First Children”, “Second”, “Third” seems weird; it’s literal English in the Japanese script, but should have been “Child” or “of the Children” and then you’d ask “whose children? Why Gendo’s?!” And speaking of, Gendo spends no time in the base; Rei would be lonely if she knew what that was. Shinji’s used to his absence.

Dance Dance Evangelion ep is ridiculous, reminds me very much of the comedy filler episodes of Slayers. Synchronized tooth-brushing and dancing just so they can hit a target at once. But it does start to humanize Asuka, which Rei still hasn’t had.

Magma bath has Asuka behaving slightly less awful. She’s still a bossy prima donna, and her crush on Kaji is ridiculous but nobody’s yet called her on it, but she actually steps up and does her job for once with a minimum of screaming hissy-fit. It won’t last.

But here and the first Asuka ep we finally get to see the lifecycle of the Angels, or more accurately Adamic life, starting as Human-like fetuses but almost instantly developing according to genetic programming. Interesting parallel to the Perfect Being in The Fifth Element; designed to look like a person, but she’s far far more than that, and can be regrown from just a few cells.

Back in the day, this is where the first sequence of bootleg tapes ran out, and there was a long interregnum, I think most of a year, before we got more. So there was an over-analysis of these, which isn’t really helpful because so much more backstory was written later.

(I got the toy in a LootCrate. Obviously, I would much rather have had Misato or Rei; this one keeps yelling at me.)

Solar Sail Launch

There’s been demos of solar sails before, but not a full-fledged working test. Assuming everything works, it can be a prototype for much larger systems, to move any payload anywhere in the Solar system, or to other stars, cheaply and relatively fast (small continuous acceleration adds up, and there’s no fuel needed except for orientation…)

Fall of Visual Basic, Rise of QuickBasic?

There was simply no other tool that a developer could use to sketch out a complete user interface and get coding as quickly as VB.

Except Smalltalk on the Xerox Star (1981), ResEdit on Classic Mac (1984), RCS and ORCS on Atari ST (1985), Hypercard (1986), Interface Builder on NeXTstep (1988), and others; Visual Basic came out in 1991, Delphi came out in 1995. Maybe there was no other tool on brain-damaged DOS/Windows systems before VB, I can buy that, but real computers were doing RAD a long time ago.

Alan Cooper, the “father” of Visual Basic, has done some really interesting work with interaction design and user experience, but he didn’t invent RAD. VB started life as his project “Tripod”, a shell creation tool, basically a user-customizable program launcher or “wizard”. Then Microsoft bought it and turned it into “Visual Basic”, as a kind of ugly Hypercard (is BASIC a worse language than HyperTalk? Eh.)

VB became famous for a legendary feature called edit-and-continue, which allowed developers to run their programs, find problems, fix them, and then keep going with the new code. This was a sharp difference from almost every other programming environment known to humanity, which force developers to recompile their work and start over after every change.

This is, of course, utterly wrong. Every language with a REPL can do this: You write some code in the REPL, run it, it crashes or produces wrong results, you change the one offending function and resume. All global objects are still present, no recompile necessary.


#;2> (define (hello name) (error 'hello "Unimplemented")) #;3> (define (greetings) (for-each hello '(Cthulhu YogSothoth ShubNiggurath))) #;4> (greetings) Error: (hello) Unimplemented #;4> (define (hello name) (printf "Ia ia, ~A fhtagn!\n" name)) #;5> (greetings) Ia ia, Cthulhu fhtagn! Ia ia, YogSothoth fhtagn! Ia ia, ShubNiggurath fhtagn!

The one difference is that to save state, you have to copy-paste out of .csi_history or whatever. IDLE lets you save off your session history directly, but you still have to edit it into a working script. VB did have the virtue of staying in the live editor, but you’re still just coding behind buttons, you have no access to a history or REPL.

(This is why I dislike DrRacket so much: If you edit code, it does destroy your global REPL state! Why even have a fake-REPL there, man?! Command-line Racket doesn’t have this problem, but it’s still not a great Scheme.)

Just as VB acquired the same power as C#, C# picked up the same conveniences as Visual Basic. For example, .NET’s type safety and memory management features meant that C# developers never needed to worry about memory leaks, just like VB developers.
In other words, C# now had the guardrails to protect hobbyists, students, and new programmers without surrendering its power. All of a sudden, VB was no longer something special. It was just another tool in a capable programmer’s toolkit.

Every part of that is… well, not correct.

  1. My understanding is VB.NET was a mess interacting with .NET resources, so if you used it you were still stuck in the VB gulag or had to learn so much C# or C you might as well move up.
  2. C# is a hard language to start up in, you would never give it to a newbie and say “good luck!”; although that’s what Unity does, and most Unity code is nightmarish as a result.
  3. C# is certainly not “never need to worry about memory leaks”; it’s a Java ripoff with more native libraries, many of which have dangerous C++ based memory management, and in any case you can over-retain things and fill up memory very quickly.
  4. No capable programmer is going to say “this project is best in… Visual Basic dot Net!” Except on broadcast TV-for-morons.

The one good thing from all this:

An innovative project called QB64 has created a modern QuickBASIC replica. It runs on Windows, MacOS, and Linux, with no emulator required.

OK, this is interesting. Terrible domain name www.portal.qb64.org though, what is happening there? Just qb64.org redirects to that mess.

Once you run the setup_osx.command, it has a qb64 binary, which opens a DOS-like window with the old DOS qbasic.exe UI. Huh. This isn’t bad, though the font is small and the only way to change it is with a custom font. It ships with a cyberbit.ttf font which is pretty but very W I D E.

Writing something and hitting Run|Start dumps an untitled binary in the main directory. Saving (to the programs folder in this package) and then hitting the Run|Output EXE to Source Folder toggle does something more reasonable: hello.bas, hello, hello_start.command. A trivial program is 1186K, which is excessive, but it does work, opens a terminal and shows some text.

There’s a ton of sample code in program/samples, including a lot of 3D stuff.

This is a pretty credible BASIC environment.

Pro:

  • Structured BASIC, if you want it.
  • You can just recompile on every platform.

Con:

  • No interactive REPL (that was one of the few things classic line-oriented BASIC, or hybrids like ST BASIC, had going for them).
  • Slow compile.
  • Ugly editor, though probably playing with fonts and colors would improve this.

You’ll always be better off just giving a newbie Python, but some people may have old code or nostalgia.

  • Chipmunk BASIC is certainly nicer as an interactive environment, but probably hundreds of times slower.

Evangelion Session 2: E05-07

Stopped just short of Asuka. That’s too much to leave as a cliffhanger for one day.

Rei’s early appearances are even more stiff and awkward with everyone except Gendo than I’d recalled. She is an utter robot, not even autistic or depressed and withdrawn, but just not there. That weird smile is almost worse than nothing.

Misato in a towel, and Rei in a towel or nothing at all, the fanservice was a little heavy still, but less than the first few eps. Misato’s morning ritual is how I lived my 20s, too, but sooner or later that catches up with you. Just coffee now.

The “Human weapon” ep… if you wondered how cold and calculating Ritsuko and Gendo are…

If you’re missing the old ED music instead of Rei’s theme, because the songwriter and 26 artists couldn’t make a deal with Netflix:

  • Every “Fly Me to the Moon”: I recommend watching it now, maybe youtube-dl if you want to keep it. (minor annoyance: It’s in webm, so I now have 4 CPU cores on fire[^1] trying to convert it to mp4)

The reviews are in!

Netflix isn’t providing subs for some of the text screens, but they’re usually duplicated later in English (at second commercial break?). I can read enough kana to recognize things like the roommate chore board being all シ (Shi, for Shinji) and just a few ミ (Mi, for Misato), which is funny because she won’t even do those days. This is really motivating me to get back to learning Japanese properly, because just reading nonsense words is frustrating. I accept that my calligraphy will always be shit.

1:

Evangelion Session 1: E01-04

In the distant future of 2015… after the Second Impact in 1999… SIGH. Those seemed like plausible “future” times when this came out, really.

Netflix defaulted to JP/subtitles for me, but I tried the EN dub for about 15 minutes. It’s OK, maybe better/more literal than the old one? Nobody sounds goofy, Shinji’s very mild, as he should be. But I went back to JP, at least for this first time thru. Might do a dub watch second run.

This is the Netflix English dub actors list:

Looking some of these up, they’re interesting choices. Several also appear in the new Gundam dubs. The Shinji actor Casey Mongillo being a transwoman is very appropriate, given Shinji’s gender ambivalence.

It’s weird that Netflix changed the “Fly Me to the Moon” cover from the end credits, it’s just incidental music now. Rights problems? I never felt it was really appropriate, but I only sit thru the end credits to see the “next episode” bit, which is A) Not very spoilery, and B) sometimes contains in-jokes. “More fanservice” is not so much a joke as self-awareness; there’s a lot of T&A from Misato and even scientist Ritsuko in early eps.

I am just as much in love with Misato as I was when I first saw her. When she kicks her clock and wakes up looking like a storm hit. Whoo.

Get in the damn robot, Shinji. And follow Misato’s orders, ya little creep. I’d forgotten about the blackout/flashback structure of E01-02. The dumbass schoolkids are great for illustrating how weird Shinji is, but they’re an annoying distraction the rest of the time, and they mostly get dropped later.

The constant SDAT rewinding of tracks 25 & 26…

Only goes up to 22, so I dunno how he’s listening to the last two eps (yes, I know Shinji doesn’t have the OST to his own show on his SDAT. OR DOES HE?!)