optionsScalper

verbose=on, snakeOil=off, pontification=on, humanIntelligence=off

Subscriptions

<January 2009>
SuMoTuWeThFrSa
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

News

I have been having problems with comments. If you need to comment, please see the contact button at the top of the page.

Navigation

Post Categories

About Me

JJBR

Articles

Milwaukee Bloggers

"Gentlemen" bloggers

GA/GP/EC/ML

Sensible People

F#

Math, NT, GT, TOC

Security Blogs

DirectX/Game Development

Tuesday, June 07, 2005 - Posts

AI: Sithsense.com and fun with neural nets

I love the guys at Microsoft Research.  I think that they have some brilliant minds.  I see on the roster that they have Luca Cardelli, Tony Hoare, Laszlo Lovasz, Michael Friedman and some other math and computer science monsters.  What I wouldn't give to sit in the same room with some of these folks.

The lower cased one pointed me to a blog from a Microsoft Researcher named Kevin Schofield who posted this the other day.  As a Star Wars fan (here and here and Brian Tinkler's critique here), I had to look.  It's a fun game where you get to play 20 questions against Darth Vader.  On my first try, Vader won.  He guessed correctly on question 20 that I was thinking of an ostrich.  Now if I were a 10 year old sitting in front of my computer, face to face with Vader and he made his guess correctly, I'd have to believe that there is a force, that he has command of the force (with a little help from the silly Burger King guy) and he will use the force to win this game every time.

But I'm not 10 years old.  I'm a little older.  But I still think like a 10 year old when it comes to stuff like this.  As a practitioner of EC and GP, I regularly hang out with the rest of the JJB Research group (public and termites) and we discuss this type of work.  In our EC work, we do ATB swarm and ant and termite and and other interesting simulation work.  We even ran a fun test on the Microsoft honey monkeys here.

So back to the part about thinking like a 10 year old.  10 year olds get into trouble and that's likely what I'm about to do here.  Disclaimer:  I love Star Wars, I love Burger King.  I'm not a hacker.  But, when I see stuff like this, I wonder whether it is vulnerable.  Let's set the stage for this.

It would appear that the questions engine for Vader has a neural net back-end.  I'm only speculating, but there are similar neural nets on the web that purport to do similar activities, i.e. play 20 questions.  The apparent size of most of these neural nets is 10,000,000 nodes, which on the surface, appears big.  If I play and stump Vader, i.e. get through 30 questions, he gets "mad", but asks for my answer in a text box.  So question 1: are the entries made at question 30 moderated?  Question 2: is it appropriate for a marketing campaign to allow for retraining of the neural net?  In fun terms, do I get to retrain Vader?  Because if this neural net is not protected, some clever virus writer could retrain Vader to always answer McDonald's, Wendy's, Hardee's, or you get the idea.  All communications to Vader (including my responses and the 30th question text) appear to be done through standard http POSTs.

I tried to give Vader some bogus information for about 10 entries, i.e. I played Vader 10 times and forced him to get to question 30.  Each time I was allowed to enter the text, I entered the same text.  I logged my answers for each session and during future sessions, gave consistent answers for the 30 questions.  I should be training the net if I do this.  So if my entries are not moderated, and the neural net is writable, I should be able to modify it.  I considered this activity benign.  I thought about writing the code to run a number of sessions through http POSTs and declined; I have better things to do with my time and that would be malicious.  After my 10 attempts, my "trained" answer did not appear anywhere.  Someone responsible for this application has his or her head on straight, i.e. good security for the marketing.  Either that or this neural net is wide.  In either case, Vader is intimidating, so I followed Brian's advice and kept my blue light saber handy . . .

posted Tuesday, June 07, 2005 9:41 PM by optionsScalper with 0 Comments

SMC: Metablogging is the Barber's Paradox

I love the metabloggers.  These are the people that blog about blogging.  I'm going to purposely abuse the terms blogs, blogosphere and metablogging in this post because I otherwise don't find it useful to reference the medium of the communications.  Scoble appears to be near or at the top of the metablogger blogosphere, so I must be a proper link goblin and link him for the first time (I don't kiss on the first blog link).  For the record, I'm not anti-metablog;  I just don't participate in the activity, i.e. I'm not an originator of metablog collateral.  I just blog about topics that are of interest to me and will help my readership in learning the topics that I find useful and interesting.  I entered the blogosphere with the finance attitude never let them see you coming.  In other words, like the spooks at the NSA and other secretive parties, don't allow unaware parties to become closed and determined adversaries.  But here in the blogosphere where I now find myself blogging (and metablogging for the moment ), I post blog entries like a madman (20 days, 55+ posts, check the density of posts; weather reports we're in a blizzard).

SMC (what's an SMC?)

Bertrand Russell was a first rate logician and mathematician who lived from 1872 - 1970 (yup, he's an older math guy than I, and more dead, too).  While Russell is noted for a great body of work in these disciplines, he is often quoted for the Barber's Paradox.  While I'll skip the mathematics, I'll state the most common layman's form of the paradox:

A man of Seville is shaved by the Barber of Seville, if and only if (iff), the man does not shave himself.  Does the barber shave himself?

So for all of the logic and mathematics folks out there ready to give me a good smack, I'll state the obvious distinction:  The Barber's Paradox is not a paradox, but rather a pseudoparadox (there exists no contradiction).  But it illustrates this point:

A man of Seville is blogged by the Blogger of Seville, if and only if (iff), the man does not blog himself.  Does the blogger blog himself?

Actually, now that I perform the substitutions, I can see a great many other terms that I could use in place of blog.  In fact, many of these terms have exactly four letters just as "blog" has four letters.  Nice.

Metabloggers are a waste of time and space.  They make it difficult to find useful information.  They clog the channels of useful information by blogging about themselves or by blogging about blogging.

SMC Fallacy

Metabloggers are not a waste of time and space.  Let's take three separate disciplines and determine what services the metabloggers perform.

EC and the collector agent

In ACO-SW and Artificial Life (sister disciplines to EC in some form), there is a notion of resource and in particular renewable resource.  Resources on swarm-style grids of any topology are placed under some conditions and some constraints.  Emergence of OEEs and OEBs, and other higher order OE only occurs if there is some flexibility (translated: removal of bias), in the resources.  Resources are part of the environment, i.e. they are not genotypic or phenotypic.  In proper EC (or Exparative), they affect the phylogeny and enable niche and speciation in populations.  It is common in many EC environments to find agents (or particles or ants, or termites (not this kind)) whose role (niche or species) becomes the collector of information, in resources or other intelligence.  They then distribute this information, typically in an economy, to agents that require the resources.  Metabloggers are the collector agents and perform a service for others.

Graph Theory and Clique

In graph theory, a clique is a "maximal complete subgraph" of a graph.  In a graph G = (V, E), the maximal clique number can be calculated by the formula "omega(G) is greater or equal to the sum for i equals 1 to n of the reciprocal of the quantity n minus d sub i" where d is the degree of the vertex (I still obviously can't do math in HTML; when will I learn?).  If it is not obvious from this inequality, the calculation of omega(G) is NP-Complete (see the zoo).  If the metablogger is motivated to improve the readership of their blog on the internet, then they are effectively searching for clique.  Since clique is NP-Complete, the study of the metablogger is the study in the methods of the solution for problems that are NP-Complete. (I'm now selling bridges if you are not a constructivist)

By the way, if you are a "finance guy", metabloggers and arbitrageurs have a great deal in common.  I suspect the arbs make more jack than the metabloggers.  I guess that they can afford more shampoo . . .

posted Tuesday, June 07, 2005 9:25 PM by optionsScalper with 1 Comments

Snow Advisory

Keep up with me here.  It is obviously snowing out and I've got a bit of a blizzard on my hands.  I've got good and bad news.

The good news is that the posting pace will continue until morale improves.

The bad news is in two parts.  Part 1:  The rest of the JJBR crew won't be posting in this snowstorm.  Part 2:  The rest of the JJBR crew won't be posting for the rest of their (cyber)lives.  Boris, Ivan and bigH sadly are going termite.

There, I actually said it.  I'm metablogging and it feels soooo good.

posted Tuesday, June 07, 2005 9:16 PM by optionsScalper with 1 Comments

TDD: A Statement of Position

In my recent post, rabbit holes, I make reference to the discipline of TDD.  The agile one had a useful post here.  He's decided to call me out on Test Driven Development (TDD).  Now, this is about blogness, i.e. transparency of character and the purity and spontaneity of thought, as the lower cased one would say.  There's a saying in the legal profession "Don't ask a question of the witness for which you don't already have the answer."  I can't tell if I'm the prosecutor or the witness.  Either way, this will result in goodness for the community.  Attempts to decompose any discipline and then either defend or attack the discipline results in either a discredited discipline or a stronger discipline.  My hope here is for a stronger discipline.

If it is unclear, let me state for the record, I consider the agile one a competent developer, a colleague (as a former co-worker) and someone who is in the practice of what I feel is critical for any developer (or anyone for that matter):  Continuous improvement of self through the acquisition of knowledge.  I consider him a friend and hope that my relationship with him improves over time.

The agile one states:

"I have had discussions (more or less debates) about his dismissal of the usefulness of Test Drivin Development (TDD) in the past. He believes that TDD’s purpose is to ensure we have working code (no bugs), and that if we used more advanced languages that used more mathematical approaches then our code would be verified to be working by a compiler (automated code coverage of some sort). The issue I have with this particular argument of his is that he misses the true point of TDD. TDD is not really for testing code to ensure it works (bug free), but it is to shape the development process so that we code to the requirements, nothing more nothing less. So I feel that deflates his arguments about TDD."

My response:

Thank you for allowing personal conversations between you and I to be brought into the blogosphere.  I am angered that you have decided to do this.  Emotions aside, my opinions are my own and I will share with the world what I am able and capable.  I labeled these views 10 ft views.  I haven't the time or the patience to share the entire view.  I am, as anyone else, unable to share every opinion on every topic that I use in my daily life.  I also appreciate the mischaracterization of my view of TDD.  You've decided to take your view of my comments from a private conversation and reconstitute them from your perspective on your blog.  That is your prerogative.  I'm certain that you have a future in tabloid journalism.  Read my post on partial and partially erroneous for an example of what you are practicing here.  You've decided that my understanding of TDD is partially erroneous without having a thorough discussion on the topic.  You and I have not had a sufficient number of conversations on this topic to warrant a clear understanding of each other's position on the topic.  Nor have we had conversations to transfer knowledge of our views of TDD to improve ourselves.  The very thing that you hold dear in TDD, i.e. the reduction of errors and the improvement in quality of the software product through a distributed mechanism among disparate developers working on disparate classes, modules, subsystems and systems, is the very thing that you ignore in your assessment of my view of TDD in your argument.  That is the source of my anger and frustration.  I know you to be a better person than this and this pained me when you chose this path.

Clarification, without Backpedaling

In the course of the development of software, practitioners of every degree of competence are faced with many difficult decisions.  Those that perform the duties associated with requirements are required (no pun intended) to constantly evaluate those requirements.  Those that design must face issues based on what they know of the given set of requirements and what has been formalized for the future.  At the end of the day, practitioners must deliver software with expectations on the quality of that software (and schedule and cost and other factors that are difficult to both estimate and meet).

I am in favor of TDD because it attempts to improve quality.  The focus of this statement is not on quality.  Those that originated and espouse TDD are engaged in the simple act of attempting to improve.  I'm certain that this is one aspect of the fitness function of the human genotype under The Baldwin Effect (no link, I'll be posting on this next week).  The quality aspect is also important.  I find difficulty in other aspects of the practice of TDD.

Let's review my excerpt as the agile one has taken it and I'll include a few other excerpts from the original as well:

From my rabbit hole entry:

"Warning:  There may be a little rambling here and possibly a little incoherence, but I must retain, in the words of the lower-cased one, my blogness (transparency of character and purity in spontaneity)."

There, I'm off the hook and claim no social responsibility.  Just kidding, read on.

“programming languages have a short history and have not had any revolutionary advancement recently.  I especially enjoyed the history as I'm a fanatic about the history of mathematics.  The first order logic (and lambda calculus) as prescribed by Church and others provides the basis for many of these languages.  I think that the current notions in computing that allows for the construction of software in the absence of program verification in the manner of Hoare Logic or other forms of provability (NOT TDD) is reckless.  While the motivations for TDD are noble, it would be unnecessary if development environments allowed for proofs and program verification.  It provides the practitioner (developer, architect, designer, or otherwise) of computing environments with difficult, if not impossible quality constraints. “

I promise not to back-pedal, but to clarify.  ". . .While the motivations for TDD are noble, it would be unnecessary if development . . ." should read either ". . .While the motivations for TDD are noble, the tests would be unnecessary if development . . ." or ". . .While the motivations for TDD are noble, it would be unnecessary to test if development . . ."  Both provide the viewpoint I attempted here.

". . . It provides the practitioner . . ." should read ". . . The lack of proof theory or program verification provides the practitioner . . ."

As I believe in integrity in this space, I will not edit the original entry.  It must stand as is.  The trackback from this entry will provide any readers of my material the chance to assess for themselves my original state of mind.

So I have too many pronouns in that paragraph.  Mea culpa.  Slap me on the wrist for not using a more prescriptive approach.  I don't disagree with the discovery process of TDD.  I disagree with the use of the tests in TDD.  The agile one is correct in calling me out on this.  This required a useful and important clarification.

"The notion that we attempt to practice simultaneously OO, SOA and AOP (all of which are useful, not hollistic and definitely insufficient) is only a simple indication that we have not taken the time to understand the significance of the role of the science of computing."

This point is critical (and how hollistic (holistic) made it in is beyond me; I thought I spillcheked).  There has not been any sufficient work in the science of computing to demonstrate our usage of many of the new computing methodologies.  BizTalk is based on pi-calculus, but it appears Indigo is not.  AOP and AOM receive coverage in this article.  Yet there is no mathematical treatment for much of this work (outside of the pi-calculus for BizTalk).  There is little foundation in the science of computing to justify chasing much in these disciplines on such a wide and public platform.  The counter to this argument is that man is an intelligent being (I really need to write "The Baldwin Effect" post soon) and only through the dissemination of ideas and disciplines and the diversity of thought will there be any significant improvement.  This is the same argument made in favor of the application of EC and I am a proponent of this.

Excerpt from the agile one's post:

"Except he backs his mostly unpopular messages with mathematics so it’s hard to refute some of what he pontificates."

Hmmmmmmmmmmm.

Clarification and Justification

None of this was my point in the rabbit hole post.  The point was that I was chasing down significant pieces of work in the following:

  • Proof Theory
  • Category Theory
  • Model Theory
  • Type Theory (could I be more vague?)
  • Curry-Howard Correspondence
  • Hoare Logic
  • Embryogeny and Automata Theory
  • Embriology and the Graph Theory for compiler synthesis (current functional, imperative and other models exhibit weaknesses under particular mathematical constraints)
  • Models of Emergent Computation to perform this work (real environments built on .Net in C#, MSIL and CLR running on real servers)

I was distinguishing between the research that I (and the JJBR public and termite members) were doing and the TDD .  I did not want to cloud the reader's judgment.

See these posts by various people here , here and here.

I understand the precepts here.  But please think clearly about partial and partially erroneous (PAPE).  It comes up time and again.  The reason TDD is successful is arguably not the test.  The reason that TDD is useful is that it removes partially erroneous from the process.  I don't know how much more painfully clear I can be on this topic.  The link to Chris Sells (I just linked him on another topic and he is a gentleman) is really a great, practical explanation.  But if you read carefully what transpires in the process, the test mechanism is actually only a vertex in the graph of the problem.  The mechanism to improve the "confidence" is "test" according to the post from Owen Rogers as originated by Ward Cunningham (excellent distillation).  Confidence is linearly proportional to test.  I think this algebraic representation is useful, I just don't agree with the variable "test".  "proof" would provide the higher (arguably not highest for a considerable number of reasons taken from Ramsey Theory) degree of confidence.  In the absence of practical "proof", "test" is reasonable as the variable.

So I disagree with the T in TDD and I'll make no apologies for this.  But I won't debate this in public and I won't be called out on this.  I understand the principles of TDD and practice them regularly as a practical matter in the course of my professional software development (yes, I develop real software for a living in .Net and even legacy VB6, but don't tell anyone).  Even within JJBR we espouse TDD.  But I (and JJBR) want the better model:  PAPE where the communications of the partial is a low cost Ramsey number (which is essentially one of the goals of BizTalk and Indigo and is completely absent in their mathematics) and where the partially erroneous can be reduced (Mr. Box's tenets three and four in his overview of SO and Indigo attempt this reduction in a qualitative manner).  That requires linguistics (lexical semantics, morphology, syntax, etc., i.e. another BIG rabbit hole) and a great deal of the disciplines that I mentioned above.

NOTE:  If you haven't read my post on PAPE and are in favor of SOA, services, WSDL, contract-first vs. code-first, Indigo, pi-calculus or any of the modern computing theory under debate, please take a moment and read it.

Future Debaters:  Don't waste my time calling me out on this topic.  TDD is a low priority on my list of items, i.e. since it adds value and is a practical, useful tool, I'll exercise it where necessary.  Within JJBR, we have significant collateral for axiomatic and denotational semantics in use in our computing environment (within and extending the .Net 1.1 framework, no less) and they are a part of our daily practices.  While we find the tests of TDD valuable, it is the characterization of PAPE as a model in Emergent Computation that improves quality with reduction of errors as an OEB.  The phylogeny of the EC provides the clues for what may be as this problem is at a minimum in NE.  This is another example of where the EC as a tool can extend human understanding of a problem.  The EC likely cannot solve the problem independently, but will provide information that may be used in the human discovery of improvements in a model.

While I'll not presume to speak for Cunningham or Beck or the other originators of TDD, I believe they felt TDD was to improve quality and reduce errors.  Their evangelism on this topic has arguably made a great deal of software in the world less prone to breakage and more closely aligned to its intended meaning and usage.

I can't remember.  Was I the prosecutor or the witness . . .

posted Tuesday, June 07, 2005 7:37 AM by optionsScalper with 1 Comments

Powered by Community Server, by Telligent Systems