Monday, November 28, 2016


There’s a Joel on Software [1] blog about why you should never rewrite a program from scratch.

He gives a couple of examples from the 90s (? I guess … I wasn’t active in the field until the late 00s) that all ended in disaster because people tried to rewrite some very complex program from scratch.  Then comes the punchline:  The reason why everyone hates their programs is because they’re filled with badly written components that have had hundreds of independent incremental changes made over time.  And the reason that these programs work and need to be kept is because these hundreds of independent incremental changes are all bug fixes.

So when I hear this I immediately think of stories about machine learning being able to create well optimized sorting algorithms, but the source code is completely incomprehensible.  My interpretation is that some problems exist in a space that has bad cognitive complexity [2].  When you hit this problems with a machine learning algorithm the algorithm starts charting out the space, but it’s blind and stupid.  It bumps into all of the little holes and discontinuities and makes ad hoc fixes that make sense in the moment but generate code that doesn’t make any sense.

My thought is that the Software Engineering process that was in place in the 90s (and let’s be honest, is probably still is in place nearly everywhere) is basically nothing more than a machine learning algorithm.  A blind and stupid algorithm that doesn’t have the wherewithal to conceptualize the problem that it is trying to solve.  Joel sees all of these less than ideal software components and says this is how we get working software; I see all of these less than ideal software components and think that we need a better way to analyze what the end users need and generate requirements.  Better bug tracking, better flaw resolution procedures, better discovery phases, better prototyping, better implementation techniques.  It has been over 15 years, I wonder if Joel’s opinion has changed or been otherwise refined.

Can the software engineering process be better?  Well I heard a story about how the JPL resolves bugs.  Every bug at the JPL isn’t a problem with the software it’s a problem with the process.  When they find a bug in the software they find out how to change the process such that the bug wouldn’t have shown up in the first place.  The next thing they do is to audit the entire code base to ensure that they get all instances of the bug that may have been introduced when they were using the faulty process.  Probably too involved to use for a throw away web app, but it does give you something to think about.

Here’s an idea: Semantic movie scene search engines

We’ve got all this increasingly impressive image recognition technology.  So let’s run it over every movie ever.  Then we can build a database.  Finally you throw a scripting language over it.  

Imagine we could be living in a world where all you need is to type the words “Kevin Bacon walks out of an elevator” and you’ll get a montage of every time Kevin Bacon walked out of an elevator.

Saturday, November 26, 2016


I’ve got three links: 

The first one is a description of evo moment 37.  The second is a Doom 2 custom map that someone built.  And the last one is an in depth breakdown on a challenge on Super Mario 64.  

What do all three of these links have in common?  They highlight people being absolutely unreasonably good at video games.  Don’t get me wrong though.  I think it’s fantastic that people are capable of being so good at anything and this includes video games.  However, I also can’t help but think that there is some change that can be done in society such that these people’s hard work and expertise can be more productive.  What’s going on in these tiny samples of video games at large is after all rather impressive; there’s much more where this came from.

I don’t think the answer is gamification.  More like finding opportunities for people with this sort of potential to have the leeway to be excellent in the world. 

Thursday, November 3, 2016

How Suicide Squad Should Have Started

I think there’s two problems with Suicide Squad.  The first is that they advertised it as a Joker movie.  The second is that Will Smith decided to play Deadshot as cool when he should have played him as flawed.  It’s pretty obvious why mis-advertising a movie is a bad idea, so let’s talk about the second issue.  Why shouldn’t Will Smith be a cool Deadshot?  The problem is that Deathstroke [1] is much cooler then Deadshot.  Eventually DC is going to make a movie with Deathstroke and no one is going to care about Will Smith and his much less cooler Deadshot.  Also Deadshot is much more interesting as a flawed person.  Deadshot never misses because he accidentally shot his brother while trying to shoot his abusive father.  This is also might be why he can’t bring himself to kill batman.  Because batman is a personal rival that reminds him of his brother.

So here’s the way I see fixing Suicide Squad.

The movie opens by retelling the end of the last movie.  The Suicide Squad is fighting Enchantress and suddenly Adam West in the 1960’s batman suit flies into the room and proceeds to punch everyone into submission (complete with POW!).

Cut to Joker in an abandoned warehouse.  He’s sitting at a table surrounded by his gang and Harley Quinn.  He’s just been telling his story about Adam West Batman.  The camera spins around to see a lone Deadshot.  Deadshot says, “Thats the stupidest story I’ve ever heard.”

It’s really hard for a movie studio to admit they’re wrong, but in this case they should apologize to the fans and this is the perfect way to do it while also making a great joke.

The movie rewinds from this point (with an audible rewind sound) to an earlier part of the film that we haven’t actually seen yet.  Deadshot is outside a warehouse with a group of people.  He says, “I’ll handle it myself.”  The response is, “You can’t do that by yourself.  That’s suicide.”  Deadshot gives back a grin.

Cut to the movie’s title:  Suicide Squad

Back at the warehouse we deliver some expositional dialog that let’s us know that Deadshot is brokering a deal between some unknown person and the Joker gang.  Several camera shots highlight the one-sided nature of the room.  The Joker has beefy, gun-toting psychopaths.  Deadshot sits by himself looking small.  However, he’s also completely unfazed by the potential danger to his person.

An explosion occurs and there’s a police raid on the deal.  It’s not going well.  Between Joker’s gang and Deadshot the police don’t have a chance.  However, batman shows up and is able to subdue the majority of Joker’s gang including Harley Quinn and Deadshot.  Joker gets away by stabbing Deadshot in the back (perhaps literally).

The rest of the movie is Joker doing something big chaotic and insane in order to rescue Harley Quinn from having to be part of the Suicide Squad as well as Deadshot trying to get revenge on Joker for betraying him by joining the Suicide Squad willingly.

The warehouse action scene is a great opportunity to do some cool camera work and tell about Deadshot’s past.  Before each shot that Deadshot takes you slow down time and show a flashback of him being abused by his father.  Cut back to the action and Deadshot takes another shot.  Finally Deadshot has the opportunity to shoot Batman and time slows down again.  However, this time instead of seeing Deadshot’s abusive father we see Deadshot accidentally shooting his brother.  Time speeds back up and Deadshot misses Batman.

This also lets us build up a morbidly humorous bit with Joker.  Joker can see Deadshot doing the slow motion flashback thing and “copy” it.  Joker approaches a swat team member with a knife, time slows down, we get a flashback of children opening a present with a puppy emerging out of it, cut back to the action scene and Joker stabs his victim.

The original Suicide Squad movie is about Enchantress breaking free and causing problems.  The real story should be something about Joker, but Enchantress trying to break free via covert actions would actually make a really great secondary plot to a Joker movie.  Each time Enchantress is let off her chain she sets up something without a clear purpose.  At the end of the movie we are finally able to put together what we were seeing during the entire movie.  A plot expertly executed that gives her freedom.  And then 30 seconds into her escape and revenge Joker pulls off some ridiculous attack that kills her.

Naturally people are going to ask where Batman is.  The movie can totally answer this as well.  Literally have someone from the Suicide Squad ask Amanda Waller why they just don’t get Batman to fix everything.  

The camera immediately cuts to a massive Batman fight scene.  He’s fighting a room full of men with guns.  In the background there’s a nuclear bomb with a 30 second countdown shown slowly counting towards zero.  

The camera cuts back to Amanda Waller and she says, “You can’t expect us to put national security in the hands of a crazy vigilante who doesn’t answer to anyone.”

It would also be great to deal with is why nobody tries find out who Batman really is.  Personally, I think secret identity drama is kind of silly and normally done wrong.  So far the DC cinematic universe has done a good job with this because it looks like everyone knows who Batman is, but no one can do anything about it because he’s a billionaire ninja.  Batman is unfazed every time someone says they know his secret because his name isn’t Bruce Wayne OR Batman.  It’s the sound his fist makes when it hits you in the face.  New Suicide Squad is going to expand on this.

“If Batman is such a lose cannon why don’t you just find out who he is and neutralize him?” asks Captain Boomerang.  Camera cuts to Batman punching people in the face.  Camera cuts again to a well dressed man in a suit.  He’s in city hall handing some documents to an unseen person, “And you *will* stop these ridiculous inquires into Mr. Wayne or we *will* move forward with our $200 billion dollar defamation lawsuit.”  Cut back to Batman punching people in the face.  Cut back to Colonel Rick Flag saying, “It isn’t that easy.”

You can also run this scene again with the Joker to humorous effect.  Random gang member asks why Joker doesn’t just find out who Batman really is.  Cut to Adam West in the BvS batman suit punching people in the face.  Cut to the earlier scene with the lawyer handing the unseen person the document in city hall … only for the camera to pull back showing the lawyer is really in a bad part of town and the unseen person is actually Joker.  The line about $200 billion is replaced with an identical one except with $200 quadrillion.  Cut back to George Clooney punching someone in the face in the 1960’s batman suit.  Cut back to Joker who says, “I’m not *that* crazy.”]

Obviously there’s a lot more work to be done.  But a “remake” of Suicide Squad with these sorts of elements would go a long way to fixing the issues with the movie.