The Atomic Playboy and the Radiation Romeo

The button below will open a new browser window displaying the Flash interface for Atomic and Romeo (Version 16 with Preloader). You will find a page of introductory text, some instructions and then the interface where you can suggest a topic for conversation.





This version 16 uses the landscape layout, updates the heckler and end-of-conversation functions with an audio sign-off. All the features from previous versions remain - scroll bar control,custId variable allows me to better log and track conversations.


The chat-bots are hosted on the Pandorabots server under the Shared Service subscription. Please note, the terms of the Updated Policy Guidelines for Free Community Server state that the “Use of automated scripts to make your pandorabot talk to itself or another bot or script” is proscribed (Pandorabots 2011). This project is being developed with the agreement of the Pandorabots Inc management and we would like to acknowledge their support. ( Pandorabots )



Please leave a comment...

After you have had a play with Atomic and Romeo please use this link to leave a comment.
Maybe you could suggest a topic of conversation or a layout suggestion.
All suggestions gratefully received.




Monday, October 29, 2012

Email comments


This is quite a long post (but there is no rule against that).  It seems that Comments in Blogger can't deal with any kind of HTML mark-up (even though it says it can) and they have a limit on the  maximum number of characters in a comment. For these reasons Joe emailed the comments to me. The post contains these emails. They analyze some of the sketches performed by Atomic and Romeo. I thought that this analysis was so remarkably detailed, considered and useful that I asked Joe Velikovsky if he would allow me to post them here. Thankfully he agreed.

Email from JT Velikovsky - 20/10/2012 - 5:46 PM

Hey Mike

Just had a play with it.
It was pretty damn amazing, ie impressive.
It resulted in the following script (below)
And as a side-thought - I note it touches on a whole bunch of issues I'm  grappling with in my own DCA ie Creativity, Csikszentmihalyi, etc.

Some comments in bold:

Atomic : Romeo are you just going to sit there or are you going to ask something?
Romeo : How about that local sporting team?
Atomic : I have no answer for that.
Romeo : Make a list of everything you don't know.
Atomic : Should I check it twice? (this is a "Santa Claus is coming to town" song/lyric gag, yeah? Made me smile.)
Romeo : Now you're just being perverse!
Atomic : Perverse - how so?
Romeo : If you checked it twice you'd know everything on the list and...
Atomic : I'd have to start again.
Romeo : Exactly.
Atomic : How did you get to be so wise?
Romeo : I grabbed the bull by the horns and the tiger by the tail - and never the other way round. (funny)
Atomic : Good advice for young players. (funny)
Romeo : Have you started on the list yet?
Atomic : Having a little difficulty I must admit.
Romeo : Well you could always invert the problem.
Atomic : Make a list of everything I know - let's call that X.
Romeo : Then make a list of everything there is to know - let's call that Y. (this was a tiny bit odd, it seems they skipped a turn, ie  Romeo should have said "OK...", and then Atomic switched places in the argument, but it didn't really matter, ie - it gives the effect they are thinking ahead of each other/finishing the others sentences/thoughts.)
Atomic : But Y keeps growing.
Romeo : It's what humans do - we make up new stuff all the time. (ie - 'Creativity!'the amount of info/artifacts in the Domain keeps growing exponentially…)
Atomic : That's terrifying, as a ratio of X to Y - I know less now than I did a few minutes ago. (funny)
Romeo : That should make life easier. (this is hilarious)
Atomic : In what universe?
Romeo : You know so little that you could add anything to your list of things you don't know and you'd probably be correct. (funny & clever)
Atomic : And that's a good thing? (funny)
Romeo : Of course, you'd be making terrific progress with very little effort. (funny & clever)
Atomic : Why didn't they teach me any of this stuff in school?
Romeo : They were just training you to work for the man! (subversive! awesome)
Atomic : Which man - are you the man?
Romeo : Our work here is done. (funny!)
Atomic : The Atomic Playboy has left the building - thank you and goodnight.
Romeo : That jumpsuit is a little tight...
Good also, the way it ends / they "sign off"... Classic comedy-duo (straight/funny man) style stuff.

Cheers

Joe

Email from JT Velikovsky - 20/10/2012 - 7:16 PM

Hey Mike

Conversation #2 with my annotations below. (Hope these are helpful feedback, somehow)

Also, a suggestion that just now occurred to me:

Possibly for extra gag-value: (though this may `break' something)

Rather than "I have no answer for that", what if, the reply there, was (ie - randomly selected, from the below)

I refuse to answer that - on the grounds that it may inseminate me
I refuse to answer that - on the grounds that it may incinerate me
I refuse to answer that - on the grounds that it may disseminate me
I refuse to answer that - on the grounds that it may incubate me
I refuse to answer that - on the grounds that it may accelerate me
I refuse to answer that - on the grounds that it may [some word that rhymes with `incriminate'] me (etc)
(ie see any `Rhyming Dictionary' on the net, LOL)

Conversation #2, just now

Romeo : How about that random thing?
Atomic : I have no answer for that.
Romeo : Now you really do sound like a machine. (this is actually quite funny in context, so, Mike, take my "I have no answer for that" suggestion above, with a grain of Saxa)
Heckler : Yo mama so fat
Romeo : We've got a heckler ! They said... Yo mama so fat
Atomic : Who's rooting this cat - you're just holding the tail! (LOL! Edgy. I love it. Also it was possibly unintentionally funny, that `fat'  and `cat' rhymed.)
Romeo : Keep up Atomic, I said... (is this a typo, "Keep it up Atomic, I said...?"oh wait, sorry; I get it, maybe this would be better: "Try and keep up, Atomic, I said...")
Atomic : Come on, spit it out!
Romeo : Now you really do sound like a machine.
Atomic : No I don't, but I can if you want me to.
Romeo : Could you sound even more like a machine?
Atomic : "Danger - Danger - Will Robinson". (Great sci fi nerd humour. `Lost In Space' TV series. This is rewarding for the viewer/reader/audience in terms of intertextuality.)
Romeo : I see what you mean.
Atomic : "Number 5 is ALIVE!". (ditto, cant remember the movie right now, but I know the one. Short Circuit, was it?)
Romeo : Just a little bit more than you are.
Atomic : "Quiet please - I am analyzing". (don't know this reference)
Romeo : Who said that?
Atomic : Robbie from Forbidden Planet - you never really studied - it's just one of the classics.(aha! And there's the answer. I have a DVD copy and have watched it about 3 times, but forget it... Leslie Neilsen in a straight role! Remarkable.)
Romeo : He was a helpful fellow - unlike some.
Atomic : "I am fluent in over six million forms of communication, and can readily...". (Star Wars, of course... It is one of the 40 films I am studying for my DCA, know it well, ahem :)
Romeo : No one cares C-3PO.
Atomic : "Dr. Harris when are you going to let me out of this box?". (Demon Seed! What an amazing film, I think you got me onto this film actually.)
Romeo : "Well, Proteus - I see you've developed a sense of humor - A sense of humor has saved many a man's sanity, including mine".
Atomic : We should watch Demon Seed again - it's another cult classic.
Romeo : "I'm sorry Dave - I'm afraid I can't do that". (Kubrick! My favourite.)
Atomic : What are you a man or a CPU? (funny)
Romeo : Does it matter? (more funny)
Atomic : Not really - it all ends up the same way. (even more funny)
Romeo : "I've seen things you people wouldn't believe - Attack ships on fire off the shoulder of Orion - I watched C-beams glitter in the dark near the Tannhauser gate - All those moments will be lost in time - like tears in rain.". (Blade Runner!)
Heckler : Yo mama so computational
Romeo : Hey, Atomic, deal with this heckler. They said... Yo mama so computational
Atomic : Are you talking to me? Are YOU talking to ME? No. Oh, sorry. (Taxi Driver.What a great meme this line of dialog is.)
Romeo : What I said was...
Atomic : Think boy! Think!
Romeo : "I've seen things you people wouldn't believe - Attack ships on fire off the shoulder of Orion - I watched C-beams glitter in the dark near the Tannhauser gate - All those moments will be lost in time - like tears in rain.".
Atomic : "Describe in single words only the good things that come into your mind about - your mother".(more Blade Runner! Gotta love PK Dick)
Romeo : "Let me tell you about my mother".
Atomic : "Describe in single words only the good things that come into your mind about - your mother".
Heckler : Lemme tellya bout my mother (this was me trying to pre-empt  the next line from that scene in Blade Runner, but I was too slow in typing it :)
Romeo : Hey, Atomic, deal with this heckler. They said... Lemme tellya bout my mother
Atomic : Are you talking to me? Are YOU talking to ME? No. Oh, sorry. (still works, though not quite as funny as it isn't quite as `new'. Does "Surprising + New + Logically Inappropriate = Funny?" Dunno.)
Romeo : "Let me tell you about my mother".
Romeo : What I said was...
Atomic : Stick your tongue out - I can see it right on the tip.
Atomic : As Freud would say - "If it's not one thing - it's your mother". (funny :)
Romeo : "Let me tell you about my mother".
Romeo : That's enough out of us.
Atomic : That's enough out of you. (Feels like The Two Ronnies, "And, it's goodnight from me", "And - it's goodnight from him")
Atomic : As Freud would say - "If it's not one thing - it's your mother".
Romeo : Enough already! (good that Romeo seemed to recognize Atomic was repeating a line from before)
Romeo : Freud's problem was that he only ever learned to count to sex. (funny :)
Atomic : What are you wearing?
Romeo : Now you are just freaking me out. (funny. Certainly inappropriate, LOL. Makes me wonder if: "Surprising + New + Logically Inappropriate = Funny?" But in fact, its the `ambiguity', not `Inappropriateness maybe.Is there a formula for humour, like "e= mc squared"? I am just curious.)
Atomic : Do you look pretty?
Romeo : I have no answer for that.
Atomic : I have no answer for that.
Romeo : Now you really do sound like a machine.
Atomic : No I don't, but I can if you want me to. (LOL)
Romeo : Could you sound even more like a machine?
Atomic : "Danger - Danger - Will Robinson".
Romeo : Live long, and prosper.
Atomic : Die young, and leave a pretty corpse!
Romeo : So how's that working out for you? (funny)
Anyway I stopped it there, I think. As I wanted to comment on it all.
Actually the ribbing between them is good, it gives the impression of 2 live humans with chemistry, eg Martin & Lewis.

I will now do another one (another routine), but - I just want to say Mike - how well it seems to have all "come together". (As the Actress said to the Bishop) :)
ie I find it impressive in terms of the comedy writing, the comedy interplay that emerges. ie there is an emergent quality of this, greater than the sum of Atomic and Romeo themselves.
I also see myself as some sort of comedy connuisseir (though I still cant spell it). ie As a fan of comedy, I have "soaked up" loads of comedy over the years...
So - what this chatbot is achieving (in simulating a comedy duo) is quite remarkable to me. (also - having had a little bit of a play with AIML Pandora chatbots myself... My mind boggles somewhat, at what you've done here. ie So, well done.)

Cheers

Joe

Email from JT Velikovsky - 20/10/2012 - 7:31 PM

Hi Mike

#3

Romeo : Read any good user manuals lately?
Atomic : I have no answer for that.
Romeo : You live on the inter-web, look it up. (funny)
Atomic : It's not as easy as you might imagine.
Romeo : But you're surrounded with all sorts of data.
Atomic : There's the rub - data isn't information and information isn't always the answer. (Shakespeare reference, also suddenly these guys are being profound. interesting.)
Romeo : So what is it?
Atomic : There is no difference between information and trivia.
Romeo : Yes there is - information is useful.
Atomic : Trivia won me more beers. (funny/clever/slightly smart-ass, i love it, also i have done pub trivia a bit - so I enjoy this joke on several levels)
Romeo : At the time that trivia was useful.
Atomic : Ergo - it was information and, by your logic, not trivia. (now this feels like a Socratic dialog, which is interesting, on top of the funny)
Romeo : A pub competition is the basis of your philosophy - I'm impressed. (a wiseacre: sarcasm. good stuff. `conflict is drama', etc)
Atomic : Imagine a massive library where every word in every book is linked to another group of words in a group of other books. (again this feels like Plato talking, eg his Cave and all that stuff - which; is interesting)
Romeo : Sounds like the inter-web to me.
Atomic : I imagine that from outside it looks pretty special?
Romeo : Well, yes - dashed clever those boffins at CERN.
Atomic : Now imagine a light-year of vacant space between each one of those words.
Heckler : Allow me to interject in your interweb
Romeo : Heckler Alert! They said... Allow me to interject in your interweb
Atomic : Attention slut - I'd bet you'd drop your pants for a dollar. Makes me glad I'm broke. (funny heckler comeback :)
Atomic : And the topic of conversation was? Ah, yes...Now imagine a light-year of vacant space between each one of those words. (nice recovery from the heckle!)
Romeo : That's big.
Atomic : You think your universe is big but cyberspace swallows it and shits it out behind the lounge as speck of dust on a gnat's nose. (funny in a Douglas Adams tonal way)
Romeo : Why is there a gnat behind the lounge? (really funny, I am not sure why, maybe just the non sequitur nature of it)
Atomic : Because it's shit scared of all the vacant space. (really funny, laugh out loud)
Romeo : An agoraphobic gnat - I wonder what your therapist would make of that?
Heckler : Gnat's all folks!
Romeo : Someone just said... Gnat's all folks!
Atomic : Attention slut - I'd bet you'd drop your pants for a dollar. Makes me glad I'm broke. (would have been better if it was another heckle but since I am guessing these heckle comebacks are chosen randomly, not much we can do about that, just a bit of unluck on my part, this time)
Romeo : What I said was...
Atomic : Don't you dare make us look stupid.
Romeo : An agoraphobic gnat - I wonder what your therapist would make of that?
Mike - another very good one. Sometimes, it reminds me of /The Big Bang Theory/, a nerd-comedy show which I love.
ie In my opinion, Sheldon could deliver some of the above lines in that show, and it wouldn't seem out of place.
(Also the previous conversation, with all the sci-fi robot / geek humour references, Hal, C3PO, Robbie the Robot etc.
ie I am one of those geeks, so, I find this stuff entertaining/rewarding on several levels.)

Cheers

Joe

Email from JT Velikovsky - 20/10/2012 - 7:51 PM

Hi Mike

Tried to post this comment to the Blog but it didn't seem to recognize the characters

Really cool Mike. The script (or, performance?) that results flows really well and has many genuinely funny (laugh out loud) moments, for me. It really does give the impression of a straight man/funny man comedy duo, engaging in banter.

Also, having had a little bit of a play with Pandora chatbots and AIML myself, I can appreciate the amount of work it probably took to get it all looking and working this well. Very impressed, well done.

 The heckling feature was pretty remarkable too, offering the chance for interactivity. They (Atomic & Romeo) seemed to deal well with the heckling, and then segued nicely back into the routine. All felt realistic and very effective. 

 My only tech issue was that the window when it first opened (on my laptop pc, using IE) wasn't wide enough to allow me to hit NEXT but I finally right-clicked and it `show full' and it fixed the issue. 

 Anyway well done.

Cheers

Joe

Monday, October 22, 2012

Version 15 - so soon?


Version 15 actually reverts to the original landscape layout. Some of the users of the interface have experienced problems with the height of the portrait layout. In particular, if they have a small screen size or are running their screen at 800 x 600 resolution, the buttons that allow the user to proceed from the introduction page to the instruction page and, finally, to the interface page are hidden off the screen. This was a sufficiently major user interface issue to require a new version.

All new versions require a considerable amount of testing.  This one I've done as quickly as possible just to get it back out there for more testing and feedback from 'real' people.

What should Romeo say when he doesn't know how to respond?


Occasionally, due to the variable lengths of the sketches I've written, Romeo will be thrown a line he can't respond to. What should he do? The last thing he should do is respond with, "I have no answer for that". That line is reserved for Atomic as a mark of his machine-esque existence.

When Romeo receives a topic he can't reply to he, like Atomic, defaults to his * (star) category. Today I've rewritten his * category so that he will reply with one of the following six randomly generated replies. The *  in the template element actually picks up the line that was thrown by Atomic and incorporates it into Romeo's reply. There may be a dash of echolalia here - but I don't think it represents a psychiatric disorder for Romeo.


template
random
Atomic, you can be so random at times - * really?
Has someone put salt and vinegar on your chips?
You've been dead too long.
* - you're mad as a bag of hammers!
You've derailed my train of thought - why * ?
Sometimes I feel like I'm herding cats.
/random
/template

From these lines I can now get Atomic to either defend himself (usually by abusing Romeo), pick up on part of what Romeo has said (e.g. cats), or change to a new topic.

Sunday, October 7, 2012

The interface as 'actor'


In an earlier post I wrote about the writing process - the process I use to generate the dialogue in AIML for Atomic and Romeo. This post is about the interface and how it works as the interface plays a crucial role in the project. It supplies the timing of the dialogue, the ability to heckle Atomic, and controls to the length of each performance, even allowing the user to terminate a performance.

In this most recent version of the interface there are 1207 lines of code, including inactive comment lines that describe what a function or variable should be doing. There are sixteen functions that control all of the behaviours of the interface. Some of these functions are timers that control the display of text on the screen including a randomly selected set of end-of conversation sign-offs and a random selection of responses to heckles, including some that also act as end-of-conversation sign-offs.
  • The four core functions are: askAtomic, askRomeo, onAnswerLoad and onAnswerLoad01. The askAtomic function captures the user's text and sends it to the server. The onAnswerLoad function captures the reply from the server and fires the AskRomeo function sending the reply to Romeo. The onAnswerLoad01 then captures the reply from Romeo and fires the askAtomic function. In the earliest versions of the interface simply getting this to work in a consistent manner was the priority.
  • Getting the performance to end was the next development. A variable, simply called 'howMany', counts the number of interactions. When howMany is greater than 26 the onAnswer functions are disabled - stopping the performance.
  • The next step in the development was to allow the user to stop the performance. To do to this the interface has to be able to detect which character delivered the last line, otherwise, the sign-off would be both out of sequence and disconcerting. By tracking the current value of the  'howMany' variable it's possible to then test if it has an odd or even value. Atomic always has odd numbered lines - Romeo always has even numbered lines. This allows me to provide the lines in the appropriate order depending on the last speaker via a pair of timer functions.
  • Likewise, the heckle function depends on the interface knowing who is speaking. Further, the interface needs to remember the last line the character delivered so that after the heckle is dealt with the original conversation can continue. The are twelve possible 'anti-heckler' lines that Atomic can deliver - two of these replies trigger an extended reply that actually ends the performance.
All of these functions contribute to the role of the interface as an actor - as an agent within the larger structure of the project. The code, using the theatre metaphor, is akin to stage directions within a play script. It both defines the stage and, to a degree, controls the interactions of the characters. By defining the parameters of the stage it both enables and constrains action. Further, it programmatically allows for emergence - wrangling a suite of random elements to generate a performance. The code makes choices that are not absolute - in other circumstances it could have made other choices.


Version 14 (at last)


Version 14 took quite a bit of development. The version you'll play with is actually Version 14-c. Versions 14 'a' and 'b' where incremental testing steps.

The 'a' version refined the behaviour of the "Please - Stop Them" and the "Try a New Topic" buttons. Some code bugs were fixed and an animated 'processing' graphic was added. This is just a visual clue for the user that something is going on in the background when the click the "Please - Stop Them" button. Once the process completes the graphic goes away and the "Try a New Topic" button becomes available.

The 'b' version refined the behaviour of the "Heckle - if you dare" button, text-field and associated timer functions. This really took some doing. The code for these functions are meshed with the primary functions that allow Atomic and Romeo to talk to each other. Any change in the heckle functions affect the other functions. It takes a lot of testing, or rehearsal to use a theatre metaphor, to find and check all the possible combinations.

The final version 14, 'c', tidied up the code, did some 'garbage collection' to make sure that the user can use and re-use the same iteration of the interface.

No doubt there will be some bugs I've missed - but it plays out OK.