Tuesday, May 31, 2011

Yet another reason to go android



NodeXL Network Graph Tool


I have been using this recently and its lots of fun. 

Course Notes on Robotics Theory


Code Bubbles guy

Lots of tasty reading here. Code bubbles looks quite interesting.


Article on research into perceptions of a robotic future


Lingo droids


This is interesting in about 5 different ways.

Article on Three laws of Robotics


This article makes some interesting points about the fundamental flaws in the Asimov model.  It boils down to ... free will.  Lol.  

Drool... how much do I want one?


Dialog Game Mechanics


Just read a review of LA Noir and the same problem has again shown up.  How to run character-player dialog that can follow the narrative while being convincing and functional. This problem has been around since CRPG's were first cracked out of the shrink wrap.

You want to talk to a character about something... so the current state of the art is a canned dialog tree or some sort of horrible natural language parser.  Both of which suck for very real and insurmountable reasons.

The canned dialog tree is incredibly restrictive and breaks the players immersion immediately because its never a good fit for what they actually want to say/ask/scream.  The natural language parser systems I have used always turn into a game of twenty questions just to find something the character will respond to.  Hardly a "conversation"; in reality a kind of torture that I just could not find entertainment in.  

My solution would be the same as that used for the light gem in Thief-the dark project. (Being too cryptic am I? You should read my honors thesis.) Its simply an abstract representation of otherwise impossible to aquire game knowledge.  The player gets a narrative artifice that, once they suspend disbelief, allows them access to information that cannot otherwise be communicated from the third person POV.  It also provides a way to project the knowledge back to the players space.  So in essence it actually engages the player even more.  There is a great deal to learn from this simple interface design exercise.

The question about dialog is... does is have to be concrete language passing between the player and their avatar and from the Avatar to the Character.  The answer is no and yes.So how would I design an immersive dialog system suitable for a free flowing game vs one with a strong narrative? 

Firstly a free-flowing game does not have the requirements for structured, topical dialog that a narrative game has... but the point is still valid.  I feel that I have a solution for both situations.  In general though the free flowing games simply has less objective to a dialog situation so there are less ways to evaluate success or failure.  (Makes it easier to be right.)  CRPG's that allow the player to wander around and talk to anyone (Morrowind et al) turn dialog into more of a random treasure hunt. If you are on a mission then the same rules apply as in a strongly narrative game.
A strong narrative game usually has structure and intent in a dialog.  Its not that dialog tree's didn't contain information, its just that the mechanic of picking a dialog option from a list is horribly crude.

Seems like an easy problem to solve. But that's me.  Now the question is to turn it into a PhD or go commercial with it?  Decisions decisions

Trolls attacking the walled garden



While this case is not new and the whole patent troll thing has been going on for a while; I was interested by this article and some others about the point of views expressed by the app developers and Apple.  The developers were feeling threatened and begging for help (which Apple has delivered) while the patent troll is still hanging around and acting threateningly...

Recast this in terms of a feudal lord with a castle containing a market place. The app developers are peasants trading in the market place and the lord taxes them for the privilege.  Now a predator ( bandits, wolf, whatever) has appeared and is trying to predate on the peasants. The peasants are easy picking for the predator. The question is what does the lord do?  Does he sit there and wait for all the peasants to leave for a safer market place run by his neighbor ( destroying his tax base and standard of living) or does he harden up, get out his big stick and go out to defend his peasants? 

The thing that I find amusing is just how little abstract thought has gone into this whole exercise.  Clearly Apple has to step in because its peasants are being attacked by a predator (correctly named as such in the comments section)  Apple is making a nice living off the developers who choose to live in its "walled garden" and  And while there has been lots of whining about being somehow contained in a walled garden, that has all gone quiet now there is a predator lurking around and the feudal lord has come out and chased it off. 

This is digital feudalism. 

The same strategies will now start to play out.  Apple can choose to be a good shepard or ignore their flock.  One will result in fat happy peasants and a fat but constantly fighting shepard or the other... a scattered flock running and hiding from predators ( cause more will come if one tastes blood) and a lord in their tower sitting on a dwindling tax base.  (But well fed predators)

This is all pretty obvious... but now test your history knowledge... what happened to the feudal system?  Nobility was enforced by birth right.... good and bad nobles husbanded or exploited their peasants, rules were created and enforced to control the peasants... and finally when there were enough peasants who were angry enough and not afraid of predator anymore ... revolt.  Seize control of the market place and run it as a democracy/comunism/whatever (not a feudal system)
At some point Apple is going to have to cede control of the market place... or be abandoned for greener pastures.  Alternatly, they can keep the fear level high and "help" the developers to stay safe and warm and taxed in the walled garden.

Expect FUD campaigns by the various market owners.  Either way, Apple, Microsoft, RIM etc will all eventually loose control of their walled gardens. Not through technological means ( cause we all know they can force their users to only use their market) but because the pastures will become so much greener elsewhere that they will starve themselves to death and consume any peasants who remain loyal. 

That's another fun concept... the peasants are much more mobile. Their code bases are portable ( to a degree) and there is no way to apply force to coerce them to return to the garden if they do get out.  ( Expect black lists and other "exit penalty" mechanisms.  (There are already "entry costs" to create an exit loss, but these will become more vicious as the competition between the markets ramps up.

At some point there will be some sort of public attempt to wrest control of the marketplaces away from the current lords.  This will be doomed to failure due to the law being on the sides of the lords.  There will be attempts to open unofficial marketplaces (already happening) and private markets (I think they are possible on the Microsoft platform, in a limited way) and then there is the "open" android market....

What about a market that is taxed by a single lord, has restrictions enforced by the lords minions but has a crudely painted sign saying "open" tacked over the portcullis?  How is it open until its run by the community, for the community and to the community standards.  "Open" is like "random"... lots of things are possible that cannot exist in a "controlled" marketplace.

We shall see.

Friday, May 27, 2011

Hardware Vision for cheap price


Interesting information on low cost hardware vision system.  The comments are especially valuable.

Thursday, May 26, 2011

Fun with Botnets


This is an analysis on botnet size captured using a technique called sinkholeing. Looks like an effective method for trashing botnets if it was used effectively.   The article also points out the obvious that the botnets and the malware are no longer that important.  Its other links in the value chain that are more critical to extracting usable value from the exercise.  Essentially a botnet is just illegal infrastructure for a business.  Anything like this needs a whole ecosystem around it to form an economic activity.

I would expect that at some point, some of the botnet systems will ( as suggested in the comments on the article) turn into a cloud service and at some future point, they will start to turn legit by paying the drone computers and selling the service to the highest bidder.  This legitimise the botnet part of the system and push the criminal/illegal parts to a smaller section of the value chain. Eventually the criminal element will be just a contractor and eventually they will move somewhere else and try to exploit a different niche.

The biggest losers from such a transformation will be the ecosystem of security companies that have fed off the fear and uncertainty that the botnets/maleware/virus ecosystem has created.  They were an opportunistic business model at the best of times.  They will transform into a much more specific security service for clients and provide targeted security around assets, probably information assets.  I fully expect to see infosec turn into some sort of cloud service where you check your information in and have a guaranteed access to it anywhere, anytime under a certain level of security.  People like guarantees.

Crowdsourcing the crowdsource


This is an interesting article on abuse or exploitation of the Mechanical Turk system for the purpose of abuse or exploitation.  Kind of symmetry that only a self balancing market could develop.  I also see this as the future of online labour recruiting. On one side of the transaction is a scammer trying to use the service to gather money, while on the other side is a scammer trying to use the service directly for profit.  In the middle of the bell curve are the regular jobs and the regular workers (who can pass the validation tests)

There is another beautiful aspect to this system.  It allows robots to work without discrimination.  It should be possible to build a market place where bot writers can write good enough bots to do the jobs that are being sourced out.

This is another fun aspect of globalization and the devaluation of the workforce. Robots will replace the lowest skilled workers first.

Self Drive Cars


This is a useful article on Google's self drive cars.  It suggests some of the problems and hints at an interesting ethical dilemma relevant to all "real world" robots when the "saves Lives" justification is used.


Wednesday, May 25, 2011

Code Bubbles


Finally.... why has this taken so long?

Interstingly Microsoft has picked up the idea and is rolling it out for their most useless version of VS2010.  Is this a ploy or just a starting point? Gotta imagine that it will percolate down to the more accessible versions once the tool has been fleshed out. Waiting.....

Funny how something like this generates a vomit of ideas.  Finally all the ideas that I have been half having for years get a new subject to fixate on. 

Pandora game console


Open game console... its funny that you don't even know you need something until you see it.  The gap in your life is so clearly defined by the solution presented before you. 

All the things wrong with the DS and the PSP have just gone away... how many times a week do you get to say that?

Tracking Online Transactions


This is an interesting little snipit about the transactions involved behind a spam advertised product.  The thought that comes to mind is the similarity to the drop-shipping model that has proliferated on ebay and other online auction sites.  The funniest thing is that every time some politician smiles brightly and talks about the wonders of free trade and the global ecconomy... this is actually what it means.  Not that I am being critical. This is a healthy thing.  It's the organisational structures that are not yet in place to regulate this sort of thing.

Its actually even funnier when you read about all the arguments and counter arguments about online music piracy and the arguments about how the old economic model is dead and how the music companies need to evolve etc etc. The thing that everyone forgets is that every economic transaction will evolve in a similar way.  EVERYTHING!  Any product our grandparents could purchase from a shop can now be delivered across the internet.  Very soon any service short of those requiring specialist equipment or personal contact will be able to be partially or completely delivered via the internet.

If you think the flight of jobs to cheap labor sources has been rapid up till now... just you wait.  For every new country that gets good, universal connection to the internet, we will have another round of movement of jobs and infrastructure in to exploit the unemployed for cheap labour and the wealthy for customers.

The long game in all this is that the internet will provide a degree of leveling, in that wealth and employment will flow to countries with cheap labor and low employment conditions while wealthy countries where labor costs are high will be drained of both employment and capital. 

This has been happening for the past few decades, so this is not exactly rocket science.  The point that I find eternally amusing is how little the political machinery wants to accept this reality.  Politicians are the last to change.  The absolute last to accept that that status quo in not maintainable.  Simply because they are only in their position by promosing to maintain the status quo ( or return to a previous idyllic status quo that the population of voters remembers fondly ( see Russia for an example of that particular issue))  But as much as I can point at Russia... I think they are just the leading edge. Half of western Europe is going through economic collapse at the moment, so they should probably be looking at Russia for guidance rather than treating Russia as some kind of "never happen here" case.
But politicians being politicians, they all want to pretend that some how they can roll back to a better time.  Just like the climate debate, "we can undo the damage" just tax carbon etc etc.  Bullshit.  There is no going back.   We can certainly tax carbon but that will just create a carbon market. If it has an incidental effect on the amount of greenhouse gas... well that's nice too.

The point is that the Internet is a transformative technology for everything, wealth, culture, community, politics, technology etc. simply because it has expanded everyones ability to access all of the above.

Are there down sides... you betcha.

Monday, May 23, 2011

Skeleton CSS base system


Handy toolkit for building mobile friendly apps quickly.  Very nice.

Thursday, May 19, 2011


Article on problems with large data sets in research.

Flaws in data anonomyzing


Article on some rules for dealing with public data sets and the problems with the idea of "anonymous"  in data sets.

Wednesday, May 18, 2011

nanolaw fiction


This is a nice piece of speculative fiction.  Short, sweet... bit rough in the finish.  It looks at the intersection between the online micropayments model and the American legal model and how that may play out in a connected world in the near future.

Tuesday, May 17, 2011

Rant on Exception Handling Strategy

I have finally made some peace with exception handling... again.

After refactoring the way I thought about exceptions so many times, I have come to a couple of (probably not new) realizations.

1. The program should never crash. It should exit gracefully even if its going out backward in a cloud of smoke. A programmer who lets an exception smash his software is just not a contender. 

2. All exceptions should be caught and reported in a controlled way as close to the root of the program as possible.  This results in the main() being a very thin wrapper around the top level exception catch.  (Since its always a fairly thin wrapper around the root object creation point, this is no bad thing.)

3. Yes exceptions come in three flavors. User errors, programmer errors and system (environment) errors.
 - User errors are violations of the assumptions of the user and need to be explained clearly and in detail. Usually with some sort of reference to "More Information".
 - Programmer errors ( bugs) are violations of the programmers assumptions.  These are things that should not exist in the finished product but usually do.  They need to be reported in enough detail to be reproduced, identified and fixed.  This may be a detailed log, stack dump, whatever.
- System errors are violations of the programmers/users assumptions about the state of the environment in which the software is running.  As this is usually a dynamic system... to a certain extent... shit happens.
These need to be handled when they can be handled, reported to the programmer when they cannot be handled and apologized for to the User. 

4. Most exceptions are not explained in a useful fashion and need to be translated. Even for programmers.  They all have dynamic context that should be captured as close to where they are thrown as possible.  There is no point letting a weird exception unwind the stack and erupt at the high level handler with a cryptic message and no contextual information.  Its just wasting everyones time. So catch it at the site, decorate it with all the nice contextual information that will make it understandable and the let it rip.

5. My custom exception class has two messages. One for the User and one for the Programmer.  Even when its the users assumptions being violated, there is useful information for the programmer.  This needs to go into an error log.  Even the fact that lots of users have a similar error means you should probably spend some time improving something.

6. The error log is gold.  Log everything.  Put in keys so it can be imported into a database and harvested for patterns.  Make your life easier. 

7. Catch your exception at the throw site. Handle it or format it for reporting.  Then either resume or throw it to the top level reporting handler.  This is easy for trivial size programs that can exit gracefully. Its a pain in the ass for large multifunction apps that have very complex state.  They should still be designed to have a thin shell (UI) that generates the state and serves as the catch layer for anything that is thrown from the depths. Where the state is trashed or becomes uncertain, the users should still be left with a UI that will allow them to re-try the same operation.  The program should not ghost out.

8. There should be layers of stability within the program.  The exception should unwind back to the previous layer of stability.  This layer should be in a known state and be immune to damage from the exception.  The User should then be able to move forward in the task again and test a different idea or variation without the whole program collapsing.

9. Wrap some protection around constructors and RAII style activity.  Be gentle when chaining constructors.  Have layers so that there is only one or two steps that unwind from a failed construction... not everything.
Give the user some levels of interaction (unless its a script driven or cmd line app obviously)  Let them find their way through the code and around the problems.