Wednesday, March 26, 2008

I is are a creature of teh nite!

Watch owt, I bite U!
Photo taken in Sammie's hip pad.
Alright, so here's a run down of my adventures thus far in Second Life. Why? Well, real life is less interesting to blog about.

First of all, I've put away my orange bugs bunny shirt. Now I is a Vampire Bat! My wings are awexome. Semi translucent. they flap realistically while I fly: especially in complicated maneuvers. My Bat avatar has more features, knobs, and dials to play with than a new car! I can hang from stuff, and as an added bonus, if you mess with me I BITE YOU wif my HOLLOW FANGS! >:[''' *chomp*

I got this getup in Luskwood. I'm really having difficulty locating a comparable area to hang out. 90% of Second Life is myspace-3d, and then there are areas like Avilion Mists that while finely crafted, have such atrociously high prim counts that even my burly laptop grinds to a halt.

I hung around for a group shot. Codex is the gator, far right. Samara is the fairy sandwiched by rabbits on the right. Angelus is the shadowy ball of fluff, claws, and tobacco on the left. The ginger rabbit flirting w/ the camera is Ashton and the narcoleptic giraffe is nighteyes.
I hung around while they were having some group photos taken, so you can see that here. The exercise was described as being like herding cats. And then inevitably Starlight (a cat, not pictured) came wandering in and had the hardest time facing to camera.

I heard a photographer for National Geographic one time describe the process of acclimating wildlife to your presence. He was photographing meerkats, which are notoriously shy creatures. So he would set up his camera equipment, and sit for hours, half the time not even taking pictures: just going through the motions of his daily routine so that the subjects would come to understand that he is not a threat, and he could document their doings uncolored by his proximity.

So, while I only know a handful of the folks who flow through here now, one day everyone will be used to the vampire bat ninja in their midst and I can walk in greeted by "norm" soundclips.

Unusual Precipitation: Griefer attack in Nova Albion. I am hanging from the gang plank, RL compadre Kuro is editing appearance at the end of the plank. LisaHot Juan seen center in pirate garb prepares a proportional response.
Meercats are shy because if they don't keep their guard up, you might eat them. That obviously is no danger in second life, so.. why would anyone here be defensive, or difficult to befriend?

The answer is: Griefers. Wired Magazine ran an oddly troll-feeding article about them last month. Griefers are simply immature pranksters who only feel important when they can successfully frustrate other people. Wired's outlandish article suggests that they keep virtual autocracies in check, and that they are well organized. Neither of these claims are true. They simply spend all of their time flitting from one virtual area to another letting off bomb scripts. Even if the area only has a handful of people in it talking about the weather.

Wired makes them out to be the Socrates Gadfly. Anyone who would actually research their behavior can see it's the same activity as defiling a public restroom. I fear their motives are also congruent.

Duck Pond '08!
Ashton, pictured with me agrees the place could use a "feed ducks" animation.
Luckily, griefers can be avoided. Lusk is an area I am told has some hefty security measures in place (though I have not felt them, so whatever they are don't seem to generate false positives), and I have not seen a griefer attack in this area.

It is also a collection of well developed sims (aka "simulators", as individual server machines tend to specific hectares of virtual land). Most other areas have a small gathering place to host many avatars, and tons of wasted land without. This being because the load of all the avatar connections and the prims needed to decorate their surroundings often draws all the power of a machine that tends a rather large geographic area.

In Luskwood the design appears to be more broadly maintained. If you leave the main social area, you are greeted with 2 sims worth of entertaining environment. On a recent journey I found a duck pond (pictured), mocked up RF and server rack mount network operation centers, general store, gazebo, playground, RC race track, well stocked pub, lighthouse, art centers, endless walkways between intricate treehouses, and the incomplete workings of a 2005 series TARDIS.

All of these places are abandoned relics from as long ago as 2003. But I wasn't alone for all of my travels, as a friend spotted me wandering around the grounds and came to join my expedition.

So there you have it. The Second Life universe appears to be obtaining a critical mass sufficient to make it interesting enough to outweigh all of it's current shortcomings (griefers, closed-source architecture and all) that I may continue to visit often.

If you stop by, look me up. My gamertag is Happ MacDonald.

Sunday, March 23, 2008

As discussed with Namowal..


As discussed with Namowal, I decided to try the "draw an illustration about a song while the song is playing" routine.

My first suggestion in the game was to pick a song coming up on the radio, you'd have no preconception or preperation, making it more impromptu.

I tried that: but I kept getting crappy songs and had to wait through them. :(

So I gave up and just pulled an mp3 of mine. :)

The other suggestion we were discussing was to not name the song when we show the picture, see if people can guess the song. So I'll do that.

This is pencil on paper, colors inverted and levels adjusted in photoshop.

Namowal said you could leave clues in the picture. I tried, but I think you'll find all my clues are visually indecipherable. ;)

Let's see if this is guessable? (or just horrible?)

Thanks guys :)

Saturday, March 22, 2008

Second Life Second Chance



My friend Wynnter is left of center, hybrid of red dress and nuclear rave sticks. I am china hat and bugs bunny Tshirt, right of center.

So since I have my new laptop now, which is tres fast and has marvelous 3d capabilities, I decided to log my old character Happ MacDonald back on to SL and see how things were going.

Apparently much better than when I left.

Population is up. Lag is down. I still crash every hour or so, but it's gotten worthwhile enough to log back on.

The best part is: Textures and world will load in no more than 60 seconds or so now! That's less warming up than my car needs in the morning.

The other best part is: Voice chat!

Apparently not many people have microphones. Of those that do, not many are brave enough to use them. So if you can speak with ease into the mic, you suddenly become one of the top 2% coolest people in the room. Since most rooms have less than 50 people, you're essentially running the show.

Easy, hunh? ;)

Get chatting with folks who also use voice chat (even if they only hear you and type back) and the experience becomes much more immersive. No more typing, reading subtitles, and navigating all at the same time. You're just .. there. Maxin' and relaxin'.

Today I showed up in a treehouse containing dancing furries. (Lufia? Luftballoons? What was the place called..) They were playing Radio Nigel (sweet!). I join in, a friend of mine from last night follows me in, and the floodgates just open up. I've attached a pic of what things got to. Apparently I was the only one rendering at upwards of 6 FPS, but it was fun. :)

Wednesday, March 19, 2008

For Sally Cruikshank: Revised Bot Code ideas


Trackback from Sally Cruikshank: Bot Code (for Jesse) or anyone else who likes code

Aside from length, I trackback this because I can go to "Edit Html" and use <pre> tags to keep my code indentation intact from here. :)

So anyways, for Sally, I recommend a code approach like this if you are up to it.

This code is Javascript mind you; you can copy it and save it as an html file and test that in your browser if you'd like to make sure it works.

I am pretty confident it will become working Actionscript 3 if you only sprinkle in the right :type specifiers (the hard part 4me), replace "alert" with "trace", and remove the <script></script> tags. (oh yeah, and I use "prompt" near the end so.. hard code something? ;)

As this grows, you'll want to keep the Corpus in one or more seperate .as files I think, just to make life easier. But there should be no trouble compiling them straight in with the actionscript.

Ok: so this code is helpful because:
• It keeps the Pattern labels (ALICE/AIML calls them "categories") together with the regex patterns and together with the answer collections.
• It lets you easily use groups matched from the regex in the answer strings: just call upon $1, $2 etc
• If you want to call upon the entire match, $& might work (Perl told me it would lol) but if not you can just put () around the whole pattern. :)
• Finally, maybe best of all, it allows you to — at your own discretion — mix live functions with string answers in the corpus. So your bot can call out to a search engine, or obtain the time, or play chess.

There are some other ideas that could expand the mental powers further, but this should help get the osprey in the air. :)

GL Sally


<script>

// Other AI projects call "the list of facts known by the bot" a "corpus" of knowledge.
var corpus = {
// These labels like "rg0" (or whatever are arbitrary. Just don't let them overlap.
// Down the road this should ease in any design decisions where "ASK-AGE" might need to defer response to "ASK-IMPOLITE-QUESTION"
'rg0': {
'regexp': /goomba/i,
'answers': ["goomba is nice","GOOMBA?","goomba-never"]
},
// Should I be asking Whinsey about Goombas?? She plays Mario Bro now?

'rg1': {
'regexp': /It is/i,
'answers': ["It certainly is","is what?"]
},

'rg2': {
'regexp': /clean/i,
'answers': ["It's clean already","how clean","cleaner than dirt","like, Mr. Clean?"]
},
// Inspired by "clean your room" I am surmising?

'name': {
'regexp': /My name is (.*[a-z])/i,
'answers': ["Pleased to meet you, $1", "$1 is such a nice name!"]
},
// Regular expression memory demonstrated here

'pickanumber': {
'regexp': /Pick a number between (\d+) and (\d+)/i,
'answers': [
"Sorry, had a fly in my ear. Between what and what now?",
function(result) {
var a = parseInt(result[1]);
var b = parseInt(result[2]);
var m = Math.floor(Math.random() * (b-a))+a;

return("I choose "+ m);
}
]
},
// Function call outs demonstrated here. As well as sass.
// Javascript "anonymous functions" are endlessly entertaining to play with I think. :)


'default': {
'regexp': /./,
'answers': ["Whatchu talkin bout, willis?", "[insert cheezy pickup line here]"]
}
// I'm using a regexp to include a customizable default reply into the corpus.
}

// I challenge you to answer my question...
function challenge(testline)
{
var i;
// for(x in y) is a great construct for iterating over a hash structure. It's like your for(i=0; i<answers.length; i++)
// except who needs to use meaningless numbers for labels?
// Although I don't know if Actionscript randomizes the order for hashes. Some languages do, some don't.
// if that happens to you I'll write up a fix.

// So here, "i" iterates through every string label, like "rg0" or "pickanumber". i is a string.
for(i in corpus)
{
// if the regexp for the corpus line we are studying matches, we'll invoke "respond" and return..
// so we don't check any other options after that.
if(testline.search(corpus[i]['regexp'])>=0)
{
return(respond(testline, corpus[i], i));
}
}
// In case the corpus somehow lacks a customizable default reply, I've got a hardcoded one here.
return("Wow, I didn't see that coming!");
}

// respond gets called with the testline, the corpus segment matched, and the label for that segment.
function respond(testline, category, label)
{
// Your random code almost exactly... not bad to factor out into a helper function if you use it twice.
// you know, like I did in this example! (lazy++ ;)
var m = Math.floor(Math.random() * category.answers.length);

// So we choose an answer.. which is either a string or an anonymous function.
var ans = category.answers[m];

// We prep "tmp" as a result set for our match itself.
var tmp = testline.match(category.regexp);

if(typeof(ans)=='string')

// If ans is a string, we do something exciting. We match our regex against tmp[0],
// replacing it with ans, and return the result! tmp[0] is identical to testline
// except it lines up with our regexp so the regexp does not need ^ or $
// in order for the replacement to be complete.
// This is the magic engine that allows the $1..$9 tricks (and others) to work
// at no extra cost.
{ return(tmp[0].replace(category.regexp, ans)); }

// ans isn't a string? Hmm. Must be a function then.
// Call the function, pass in the results of the match as the only argument.
// Whatever the function returns becomes our answer.
else { return(ans(tmp)); }
}

var testline = prompt("String?", "");

alert(challenge(testline));

</script>

International Understanding


I think it's cool for people who don't speak English that we provide instructions for the bacon dispensers in public washrooms.

But what to do when you are at home and feel that sudden pull towards our favorite form of cholesterol? It can be daunting, I know, so we have dug up this handy Flow Chart.

Enjoy!

Tuesday, March 18, 2008

Quasi .. stopped smoking?

Trackback to Sally Cruikshank: MAGIC CLAMS

There's been a debate going on as to Quasi being in any newer Sally Cruikshank films.
I don't know if fate wants to bring him back, but trying to recreate the voice sounded fun.

So I tracked down the crazy ol' duck, he had this to say over the phone. Though, it sure sounds like he's given up smoking? oy gevalt!

All in all the excersize was straightforward, I just took the best sounding take from 3 tries. I also spliced together pretty much all of his original dialog as reference. He has a grand total of like 40 seconds of voice time between Quackadero and Psychic.

So that's that, I feel better now. :)

Nina Conti, psychotic ventrilloquist

She's gorgeous, talented, jet black hair, velvety British accent, great teeth! (you know, bonus points since she's British to begin with ;)

But it all goes to hell once she pulls out her Monkey.



And some more schizophrenic fun straight from the Royal Albert Hall:


Funny Ventriloquist - For more of the funniest videos, click here

Saturday, March 15, 2008

A day in the life of a turret

My pal Vince said he'd stop by the blog, and I know he tried playing Portals recently.

So this blog post happened. :)

No gnus

See? Now I have time to write, there's just no subject matter. :)

I've been watching Seasons 1 and 2 of The West Wing, Webformix got the Grey Butte transmitters fixed which should make some customers happy, er.. I can't even find a third boring piece to round out this paragraph.

Film at eleven! :)

Thursday, March 13, 2008

Bring Sally Up

or, "Automobile Lemmings"

Found on kotaku.

So what happens when a gamer, and professional video editor decides to collect one thousand replays on a single track of a next-gen race game .. and superimpose them all into a music video?

You get this force of nature:



P.S.: If the title of this post sounds as though it is directed at you, Know that this is the case for approximately 40% of this blog's current audience. ;)

P.P.S.: The 80's are back, baybay!