Thursday, April 20, 2017

Problem Definition

Defining “problem” is a bit difficult because things quickly get philosophical.  A thief trying to rob a house might view a wall around the house a problem.  The owner of the house might see the wall as the solution.  The dog hidden behind the wall sees the wall as a problem because he can’t get to the thief.  Which means the wall isn’t a problem for the thief.  It’s actually a solution to keep the dog away.

I want to avoid perspective, subjectivity, and needing perfect prescience.  Instead of dealing with all possible meanings of “problem”, I’m going to go with a smaller scope.  Cognitive complexity [1] is my idea that some problems really are harder for people to deal with than other problems.  More or less think of it as the human equivalent to Computational Complexity.  A problem as I’m thinking of it is a graph of spaces (vaguely similar to a category) where you pay specific attention certain qualities of the spaces and the connections between them.




Each blob is a space or set that contains all of the valid options for transitioning to the other blobs via the arrows.  The idea is that you’re modeling your problem as a series of actions (the arrows) that you can take and the result of the action you’re taking (the blobs).  

However, something isn’t quite right because some of these spaces have multiple arrows entering and exiting.  Does the space somehow account for the valid inputs to multiple different blobs?  Well, the image is a simplification.  Really each blob is a collection of blobs.  Each arrow leaving a blob will have it’s own blob that encodes the valid inputs for that arrow.  Additionally, each arrow entering a blob will have a blob that encodes all of the possible outputs from that arrow.


The complexity part comes from analyzing the blobs, the relationship between the arrows and the blobs, the arrows themselves, and the relationship between the collection of blobs in any given “superblob”.

Qualities of a blob

 * The blob should be a valid metric space.  This allows you to exploit the intuition that comes from having a metric space.
 * The blob should be a low dimensional space.  High dimensional spaces have some weird characteristics that can make them hard to reason about. 
 * The blob should be path connected.  This allows you to summarize the blob with an indexing function.  In this way even complex blobs can be reasoned about.
 * The blob should have a minimal number of holes.  Holes cause problems with intuition because what looks like a valid sequence of inputs may contain hidden traps.

Qualities of the relationships between arrows and blobs

Any given arrow, valid input blob, and output blob should create a function that is continuous.  Continuous functions are great for intuition because by only knowing the behavior of a small set of inputs you more or less know how related inputs will also behave.  Discontinuous functions can send an input that is similar to a familiar input to a vastly different output.  This can be problematic when you need to reuse the output in a context where there are many different invalid choices.

Any given arrow, valid input blob, and output blob should create a function that preserves the structure of the objects being sent through them.  There’s some more explanation as why this is valuable for comprehension in [1].

Qualities of arrows

Take all of the arrows and create a meta blob that describes it.  Now you can use the qualities of a blob to determine the complexity of the arrows.

Qualities of the sub blobs in any given super blob

Ideally all of the sub blobs that make up the super blob should be an identical blob.  This would mean that however you get to a certain blob the value that you end up with can be sent to any other blob via any other arrow leaving your blob.  When the sub blobs aren’t identical you will run into problems because it means that sometimes when you enter a blob there are some exit arrows that you can’t legally take.  There has to be some overlap between output blobs in the super blob and valid input sub blobs because otherwise you would not be able to ever leave the blob you enter even if it looks like there are exit arrows (*something* is going to go wrong when you try to transition away).  The more complex the overlap the harder it is to know when you can correctly transition out of a super blob.  Even worse, the overlap may be 99% the same, but the last 1% difference may be a hidden trap that will be completely missed until you’re in a position where failure is not acceptable.

Like the qualities of arrows you can create a meta blob to track the overlap between sub blobs in order to determine how bad the situation is. 





Sunday, February 19, 2017

Futurist: Drone Helpers



Simple idea.  Everyone has a small quadcopter that helps them.  Picks up small things, takes pictures, reminds you of appointments (makes appointments … with other people’s helper drones why not), what’s that song, etc.  Everything a smart phone does and more.  Why not just use a smart phone?  The drone doesn’t accidentally fall into water.  What happens if it does?  Well we just have a bunch of micro drone stations everywhere.  Your new drone shows up in minutes if not seconds and you never know that something was up with the previous one.


Now the important part.  Customization.  That’s right you too can have a Bit from Tron floating around.  Or Navi from Zelda 64.  Or whatever.  

Futurist: Commoditize Everything


So with the last two futurist posts I made I was suggesting that we might be able to use technology in order to radically change unskilled to semi skilled labor [1] and certain problems that are otherwise computationally difficult [2].  

Now let’s imagine that this process is generalizable.  In other words, for any significant job that exists there also exists another corresponding job that allows you to completely remove the first job from the industry in which it exists and place it in a new speciality industry that only exists to service the previous industries that relied upon the job.

So in the commoditize everything universe corporations really only exist as a collection of other more specialized corporations.  Creating products where the producer, the customers, and the processes are not well known to any one organization.





Saturday, February 18, 2017

Futurist: Sudoku, inc


Computation theory turned up an interesting property of problems.  Namely that there exist some problems that are going to be difficult to compute the answer to regardless of the computation medium that you are using [1].  One interesting category of computationally difficult problems is the NP class.  All problems in the NP category are equivalent to all other problems in the NP category (after some transformation).  And the final piece of the puzzle is that solving sudoku is in the NP category.

What I’m suggesting here is that a company could leverage human talent for solving problems like sudoku puzzles to handle computationally difficult problems for their clients.  We actually see this already happening in small cases [2], and the idea is definitely receiving some research focus [3].

Imagine a company that sends out consultants to client sites in order to help them understand how to map their problems into a form that can be solved by some sort of human playable game.  The client can then send their data back to the company.  The company will send the data to a number of games that they create specifically to find solutions.  The company can have their own gamers.  And we’re not even talking one game being equivalent to one solution.  Very complex problems can be broken up and gamers and machines alike can both try to solve subspaces of the problem.  The client might not even need the final solution; they might just need to know where some of the incorrect solutions are in the solution space.







Monday, February 6, 2017

Futurist: Surrogates

So virtual reality and augmented reality technology is starting to crop up again.  This has happened in the past a few times and normally people get bored by the limitations, but this time it might be different.  

The main difference this time is Steve Jobs.  Well, the introduction of the iPhone really.  Because the iPhone was wildly successful, multiple large corporations entered into the mobile technology space.  So now we have a bunch of very impressive mobile display and computation technology that has been commoditized. 

So if you happened to have a lot of free capital floating around AND you were sufficiently imaginative AND you had enough connections, then what might you use commoditized mobile computers and displays for?

Commoditized unskilled labor.  Here’s what you do.  Take a motorcycle helmet and put a good display inside of it.  Now grab some sort of motorcycle like suit and fill it with haptics.  Finally, offer consultant services.  You tell us what problem you need unskilled labor to solve and we will generate an interface that will tell someone in our computerized motorcycle suit how to solve that problem.  The laborer can get away with zero training because the computer suit will monitor and supervise 100% of the job.  The laborer can now do anything any day any where.  

With a sufficiently good system the laborer might not event know what job they’re on.  All the laborer sees is a virtual reality display of where to walk and where to put their hands.  The suit will make sure the job gets done correctly.


Second thought:  Surrogate telepresence.  Let’s say you have an unskilled laborer who also happens to be good at pantomiming.  Setup the system to have a series of icons which will tell the laborer how to emote.  Then take an OLED and wrap it around the helmet.  Now you can have a “dummy” person that can be “driven” by someone on the other side of the country via the internet.  You don’t need to travel across the world in order to be present in a meeting. 

Wednesday, January 25, 2017

Alternate theory on Inception’s top totem

There’s a lot of chatter out there on the interwebs about Dom’s real totem.  Some say that his wedding ring is his totem.  Others say that his children’s faces are his totem.  One thing that all this has in common is that his wife’s spinning top totem seems like kind of a bad totem.  

The point of a totem is to make sure that you keep track of reality.  Dom tests Ariadne by trying to trick her into giving him her totem.  He approves when she refuses.  You need to keep your totem a secret because you want to make sure that you don’t get lost in someone else’s dream where they have replaced your totem with a fake version.  This is the mentality of a dream walker who is expecting adversarial attacks.  A secret totem will protect you because your attacker will not know the secret property of the totem.  If you are in a hostile dream your totem will lose its secret property because your attacker will not know what that property is.  So if your totem does not have its secret property then you know you’re in someone else’s dream.

Mal’s spinning top totem only has it’s secret property when it is in a dream.  In reality the top will topple.  But think about what happens if Mal is in a hostile dream.  The attacker will not know the secret of the totem and when Mal spins the top it will topple even though she is in a dream.  This is a totem that was made by a dream walker who does not expect adversarial attacks.  Mal made this totem so that she’ll know if she’s stuck in her own dream (or a dream of a cooperative dream walker).  Mal always expects her top to spin forever.  And it will if she’s in a dream she controls.  It won’t if she’s back in reality.

This makes sense though.  Mal came up with the top back when she and Dom were experimenting with dreams in a friendly context.  Dom came up with secret totems after joining the underground world of corporate dream espionage and he realized there could be hostile dream walkers and that he might be a target. 

So why does Dom still use Mal’s top.  Dom and Mal never woke up from limbo.  It really is infinite down there.  And Dom is trying desperately to stay out of any dream that Mal controls.

We don’t know how Dom and Mal setup the initial dream within dream scenario that led them to limbo.  But it was probably by alternating between who was dreaming.  After all this was how they did it in the movie proper.  They always used a different dreamer when going down a new level.  So I’m going to suggest that Mal was the dreamer in control of limbo.  Dom would be in control of the dream one level up.  And Mal the one above that.  Dom tells Ariadne that he couldn’t stand living in limbo.  But that’s because Mal was in control of it.  In the flashback/story that Dom tells Ariadne, Mal claims that Dom is in control of the dream they are in but he can’t control it because he doesn’t know he’s dreaming.  He does know he’s dreaming, but he’s lying.  He knows if he and Mal kill themselves that they would just drop into another dream.  This time with Mal in control.  Mal kills herself and goes up another level.  Dom stays.

Dom said his mission was to get back to his kids.  But we don’t learn about that until later.  What we learn right off the bat is that Dom has a figment of Mal that is tormenting him.  This story is about Dom trying to rid himself of Mal’s influence.  The story starts with a top spinning and then we’re introduced to Mal.  The story ends with Dom walking away from the same top that represents Mal’s influence.  This is why Dom is always checking the spinning top.  He knows that if the top doesn’t fall then he’s in a dream controlled by Mal.  Or the figment in his mind that represents her.  His goal is to create a sub-dreamverse that is completely isolated from Mal and where he has total control.