Looking over my directory of partially-written bad fanfics, I see:

  • a Batman fanfic where Batman is forced to work together with Slade (the Teen Titans villain) and his team of Bad Guys
  • an Indiana Jones and the Crystal Skull fanfic where Mutt turns into a Timothy Leary dropout druggie in the '60s
  • a Metajets fanfic where I kill off several named characters and put others out of commission
  • a Slayers fanfic that resulted from several iterations of messing with the universe until it was set 20 years in the future and dealing with the heros' kids, and an accompanying outline for a story that destroys that universe another 50 years in the future
  • a Smash Brothers fanfic/parody where the fighters are recruited by a guy who messes up universes for fun
  • an outline for a Stein's Gate fanfic that puts Okabe in the hospital and makes Kurisu the lead
  • a Star Trek:TNG fanfic where the Federation gets in a civil war, and Picard and Riker end up as opposing captains
  • a Transformers fanfic with a little bit of intellectual insight into geopolitics, no tits, and fewer explosions
  • [Edit Sep 10] and one more I haven't begun to write: a Garbage Pail Kids fic that patterns the dolls after stereotypical 1950s gangbangers, removes all the grossout humor and replaces it with slapstick, and makes the dolls one faction in a great Toy War involving parodies of Barney, Pokemon, GI Joe, He-Man, Green Army Men, and the Care Bears

My imagination doesn't like to stay within the bounds of an existing universe. I don't write episodes. My tendency is to do something grand with it that changes how the universe is arranged.


Bonus: have some parody ideas that I haven't written but I can tell the whole joke in one paragraph.

  • Metroid: rough brunette '80s Samus wakes up from cryosleep and mugs sexy blonde Zero Suit Samus in an alleyway, then takes her armor back
  • Touhou: Komachi and Reimu set up a racket where Reimu hunts and kills wealthy criminals, Komachi ferries their souls across the Styx to meet her work quota while charging them a significant fee, and then Komachi makes a donation to Reimu's shrine. Then the loli vampire Remelia appears in Reimu's room at night to warn her that pedophiles are *her* business.
  • Touhou again, crossed with End Of Evangelion. Enough said. No, I can say more. The invaders are the TF2 characters, then I ran out of ideas so let's redo the Twilight Zone doll episode with Shang, Pyro, and Engineer.

In most RPGs, health does not replenish between battles. You have to go to an Inn.

Getting ground down over a large number of battles, with enemies taking a small amount of HP at a time, is boring. A solution to the boredom problem is to have a smaller number of battles where the enemies do more damage. This now poses another gameplay problem: normal enemies will tear you apart unless you have healing items, so it is possible for part of the game to be impossible if you are one health potion short. The solution to that problem is to make it easy to reheal to full health between battles by making healing spells cheap and putting healing areas in dungeons. Some game developers threw up their hands and let your party automatically restore to full health between battles. We also have a conceptual change in that HP no longer represents fatigue. If you restore to full health all of the time, you are no longer getting ground down.

Let's split the middle.

First, we will make the combat attributes - HP, MP, Mental State, etc - the final result of a multi-stage process where one stage draws energy from the previous stage over game-time.

Core -> Reserve -> Immediate

  • Your Core energy is a huge stockpile that represents all of your energy for the day.
  • Your Reserve energy is refilled from your Core energy at a relatively low rate. That is basically its purpose, to prevent Core from being drained in a single encounter.
  • Your Immediate energy is what you use in battle. You cast magic using MP. You swing a sledgehammer using physical energy. Your Immediate energy is refilled from your Reservoir at a relatively high rate. You can get tired by fighting too many things at once, but if you get away and rest a while, you can recover.

The result is a system where your HP will normally refill between battles, but will not be refilled all the way if you immediately run into a second battle on the next square.

Now let's extend the idea. You can fiddle with the transfer functions. Maybe they work slower as Core goes down. Maybe they work slower as the target reservoir fills up. Maybe there is an external variable that pushes down your maximum refill over time. The result now is a system where you might restore back to full health after twenty steps, but five battles later, going twenty steps may refill you back to 80% health. Ten battles latter, twenty steps may refill you back to 60% health. Your dungeon divers are now getting ground down over time, and there is a logical and gameable system behind it.

If you need energy RIGHT NOW, you could cast a spell to refill the Reserve by burning a significant chunk of Core. You might be healthy again but your health will not restore as quickly as the other party members. Suddenly there is a downside to casting those cheap healing spells.

Your spoony bard and spoiled princess may run low on Core energy and start falling over before the hardier blacksmith, ranger, and solider. The energetic attacker whose skills go all-out may run out of steam before the others. You might be encouraged to swap out the active members of your party to let the members with low Reserve recharge.

This system could work well in action RPGs or any RPG with a day/night cycle that tries to represent the passage of time.

Sources are biased and there is a lot of disinfo out there during campaign season but it sure looks like the Clinton campaign is hauling out the Orlando shooter's father as a celebrity supporter.

A new preview release of Swift 3 is out this month. I tried compiling it with debugging flags turned on, left my computer running, and came back several hours later to a failed build.

FAILED: lib/libLTO.so
(...cut giant parameter list...)
clang-3.7: error: unable to execute command: Killed
clang-3.7: error: linker command failed due to signal (use -v to see invocation)

Huh. I tried it again while browsing the web in the background. A few hours later, my system started swapping like crazy. KDE froze for minutes at a time. top showed several ld processes each using over 1GB of memory. I think it died when one of them hit the 32-bit limit at 2GB.

So, WTF? Let's check out the sizes of some of these libraries.

560968756 Aug  6 19:22 libclangSema.a
620546286 Aug  6 19:49 libclangStaticAnalyzerCheckers.a
660270964 Aug  6 19:19 libLTO.so

And let's see what's in some of these archives.

~/swift/src/build/Ninja-DebugAssert/llvm-freebsd-x86_64/lib% ar -tv libclangStaticAnalyzerCheckers.a
rw-r--r--       0/0        164312 Dec 31 16:00 1969 AllocationDiagnostics.cpp.o
rw-r--r--       0/0       7163456 Dec 31 16:00 1969 AnalyzerStatsChecker.cpp.o
rw-r--r--       0/0       7142344 Dec 31 16:00 1969 ArrayBoundChecker.cpp.o
rw-r--r--       0/0       7290936 Dec 31 16:00 1969 ArrayBoundCheckerV2.cpp.o
rw-r--r--       0/0       9251672 Dec 31 16:00 1969 BasicObjCFoundationChecks.cpp.o
rw-r--r--       0/0       7271432 Dec 31 16:00 1969 BoolAssignmentChecker.cpp.o
rw-r--r--       0/0       7159208 Dec 31 16:00 1969 BuiltinFunctionChecker.cpp.o
...

There are many object files in the 7MB range. It adds up. Looking at one of them with elfdump, nearly all of the space is used by DWARF debugging info.

entry: 730
        sh_name: .debug_str
        sh_type: SHT_PROGBITS
        sh_flags: 
        sh_addr: 0
        sh_offset: 26152
        sh_size: 3267448
        sh_link: 0
        sh_info: 0
        sh_addralign: 1
        sh_entsize: 1
entry: 734
        sh_name: .debug_info
        sh_type: SHT_PROGBITS
        sh_flags: 
        sh_addr: 0
        sh_offset: 3296469
        sh_size: 1252146
        sh_link: 0
        sh_info: 0
        sh_addralign: 1
        sh_entsize: 0

entry: 735
        sh_name: .rela.debug_info
        sh_type: SHT_RELA
        sh_flags: 
        sh_addr: 0
        sh_offset: 5007208
        sh_size: 2054928
        sh_link: 748
        sh_info: 734
        sh_addralign: 8
        sh_entsize: 24

How big are the original source code files?

4944

So that gets turned into 7MB when debugging flags are turned on, and it all goes over 2GB when multiplied by the many files in a large package. This causes the build to fail.

Copying straight from John Schindler's twitter:


If @realDonaldTrump wants to clear up his Kremlin ties (see piece), let's resolve it now. A few simple questions.

  1. Does Trump or the Trump Org owe any funds to any Russian entities, state or private?
  2. Has Trump met or talked with Putin -- ever? The Donald has been all over the map with this one, but it's an easy question.
  3. Did Trump affiliates change the #GOP platform in Cleveland on #Ukraine -- or not? If so, who told them to?
  4. Has Mike Flynn (Trump's #natsec guru) accepted payment from RT or any other Russian government entities?
  5. Does Trump approve of comments made recently by Carter Page (his Russia guy) in Russia that sharply criticized the USA?
  6. Does Paul Manafort (Trump's campaign chair) currently accept any funding related to his years of work in #Ukraine for Yanukovych?
  7. Why is Roger Stone, a close friend of Trump's praising Julian Assange as a "hero" -- and does Trump agree with that assessment?
  8. What is the exact relationship between Trump and/or Trump Org and Felix Sater?
  9. The Trump campaign was warned about Russian influence in its ranks -- why did you ignore these warnings?
  10. A few simple questions that are easy to answer....if you want to. Let's hope @realDonaldTrump does.

A note of possible bias: Schindler is employed by Trump's kids.

Tonight I pounded out a new scene from a fic I'm never going to finish. Part of me says, oh, it looks nice! Share it! Another part of me says, this burns many of the plot points and characterization quirks that are supposed to be revealed during the course of the story, so I should hold off until I've finished it. Then I remembered that I'm not going to finish this story so I might as well post it, and it makes a good summary / introduction to the universe. Enjoy.


Read more... )

Scrap Dump

Jul. 31st, 2016 06:56 pm

pattern for resolution of an abstraction to a meaningful value

A = an abstract something

function f(A) {
  if(A == "FOO")
    return FOO
  if (A == "BAR")
    return BAR 
  if (A matches /[A-Za-z0-9]+/)
    return TOKEN_ALNUM
  if (A has method "next")
    return I_SEQUENCE
  if ( not (A contains meat) )
    return VEGETARIAN

  return DEFAULT 
}

This can be generalized to a function taking input:

   f(A, DEFAULT, array of [f_comparator -> f_resolver])

where the comparator function runs a comparison or pattern match on A, and the resolver function takes A and produces an output.

Possible error conditions:

  • All comparators fail. Solution: force caller to provide a DEFAULT value, have the caller handle it.
  • Multiple comparators match. Possible solutions:
    1. Use the first matching comparator.
    2. Give different values to comparators. Use the comparator with the highest matching score.
    3. (combination of 1 and 2) Sort the comparator->resolver pairs by comparator value before passing them in.
    4. Throw an exception (nooooooo!)
    5. [Edit Aug 2] Perform ALL of the matching operations. Assume the function is a decorator.
    6. [Edit Aug 2] Perform all of the matching operations and return a set of results. Assume the function returns results, plural, rather than one result.

Possible optimizations:

  • Inline the function calls.

These are not particularly new ideas. All of this has to be well tread ground.


[Edit Aug 2] Thoughts on "inline the function calls"

The comparator functions may be very simple and easily optimizable in theory. My preference is to write code to pass them in as a set and then let the compiler somehow produce code that has the simple comparison functions inlined as in the original example. This might be possible in theory if the functions are defined at compile time. The optimizer would need to be smart enough to unroll the loop and examine its contents and understand them.

If the functions are defined at run time, the optimizer would need to be part of the run time environment. It seems that what I want is the ability to arbitrarily optimize away function calls at runtime.

Saw the movie. Quick thoughts:

  • The movie opens with a lens flare. Is this a giant "fuck you" to Abrams's detractors? If so, well done.
  • The "Sulu Is Gay" controversy was bullshit. It was handled so subtly that there was nothing to have a controversy over.
  • The action scenes had way too much shakycam.
  • The movie overall was the best of the new series. That's not saying much but it was a fair way to waste two hours.

Plot hole: cut for plot holes )

So I'm doing this about once a year now. Read more... )

The "leaked" messages may be complete fiction from a troll, but I hope the police have plans for contingencies.

Turkish military blocks Istanbul bridges

The rumor mill suggests either (1) preparations for a massive PKK attack in Istanbul or (2) a military coup in progress.

Military coups used to be Turkey's national sport until the US refused to support the generals the last time they said they needed one in 1998. Turkey has been run by the Muslim Brotherhood since then. Opposition officers were jailed, opposition media was seized, Ataturk culture may no longer exist. If there is a coup, anybody could be responsible.

Seeing what analysts have to say:

Around the web:

  • Alison Arkin is reporting a military coup announcement and a helicopter firing on Turkish intelligence HQ. However, I have no idea who this person is or where she is getting her information.

The assassin Tommy Mair was an early subscriber to a South African nationalist agitation rag. ([Update #1] This information has been removed from the link. Was it the wrong Tommy Mair?)

The dumb fuck could have waited two weeks for the vote; Brexit was up in the polls until now.

Now watch the other side squirm and insist that a politically motivated killer was only mentally ill and it had nothing to do with his politics. ([Update #1] If the evidence of his motivation has been pulled, we're stuck with no evidence about his motivation. Still, it wouldn't surprise me.)
Update #2: his political motive is confirmed.

So I logged onto Facebook for the first time in a year or two and it recommends three people:

  1. My dad again
  2. Someone I briefly knew at a different school, and not the last person.
  3. A third person who I don't know but is someone who Facebook could reasonably have found through my friends network. The first two suggestions are not.

A possible explanation: the second person got me to join some other social network whose name I have forgotten. It's possible that I might have used the same email to join both and that Facebook bought and merged their database.

Another possibility is that I may have searched Facebook for the names of these acquaintances years ago and Facebook stored the search requests to datamine later. However, I don't see why I would have searched for this person if I knew that they used a different social network.

Earlier posts on this subject:

  1. Facebook recommends a co-worker with no apparent connections
  2. Facebook recommends my dad -- when I'm using a fake name
  3. Facebook recommends an organization that spammed my email account
  4. Facebook gives me its French version after I read Le Monde
  5. Facebook recommends pages for interests that I removed from my personal information
  6. Facebook recommends my dad -- when he's using a fake name
  7. Facebook recommends an old school acquaintance shortly after her account got hijacked by spammers
  8. Facebook recommends a website that I was reading the night before
  9. Facebook might be recording words spoken near your cell phone

From the Shorenstein Center:

The report shows that during the year 2015, major news outlets covered Donald Trump in a way that was unusual given his low initial polling numbers—a high volume of media coverage preceded Trump’s rise in the polls. Trump’s coverage was positive in tone—he received far more “good press” than “bad press.” The volume and tone of the coverage helped propel Trump to the top of Republican polls.

And with Trump standing in support of the gay community after Orlando while Democrats in Congress protested against a moment of silence for the victims and demanded the disarmament of ISIS's future victims, and with Clinton's creation of ISIS hanging around her neck, Trump probably just won the presidency. Sanders or Warren could beat him if Clinton is indicted, but the Democratic Party is probably too corrupt to allow that to happen.

Page generated Sep. 26th, 2016 12:12 pm
Powered by Dreamwidth Studios