Friday, June 29, 2007

multi-metaverse - good or evil ?

While having fun with opensim I was discussing primarily the technicalities, there are a lot of interesting non-technical implications (once opensim becomes bit more functional, that is).

The first obvious question that arises: If I have bought something "in-main-world" - am I entitled to have it within my "personal world" too ? Does the answer to the question change depending whether I run a sim just for myself, or have it "open" ?

And I think this would be one of the biggest question of all - what to do with the so called copyrights.

SL gives a lot of freedom in this area, including making the things even more restrictive than in RL - the infamous no-transfer flag - and I think the creative community clearly made a choice of *not* using the open approach.
I remember the no-xfer started massively with the much touted copybot events, and it is a slightly wrong answer (similarly as the eject scripts on your land would not stop those-too-curious from getting the camera view of your home - maybe even trigger it). If anyone has a good idea why it helps - would be interesting to know. The only thing it does for me as a consumer is extra annoyance.

Hand in hand with that goes the pure technical question of how do you *actually* transfer the stuff - but it deserves a separate post.

"Fracturing" the population - would that happen, and would it be good or evil ?
I think it is not a big problem - the community is quite diverse and rather non-intersecting today anyhow. So I do not see this as a big problem. On the other hand, the identity does become a task to solve. *notes down to think about that and write yet another post*

The very positive aspect that I see about this - is that it would make the things a bit more open, e.g. the metaverse with the best user support would get preferred, etc. - would introduce some more dynamics, and help to shape-up some of the LLs practices, which do not seem to be fancied by the users.

So, my preliminary verdict is that it would be definitely a good thing for all.

Thursday, June 28, 2007

What does it mean - "me", or "you" - to you ?

Maybe that could be a meme#19, or something - if the folks want to do it - feel free =)

I've came to this interesting question, wondering to myself - what constitutes a "SL persona" for me.

In the first life it is all simple and trivial - your friend can not take off one face and put another one. But in SL - it is all very possible.


Different skin - is that still you or not ?

And what if also a different slider values ?

What about the face slider values ?

And conversely - if some other name pops up with the familiar face, skin, etc. - is it the same person as the original one or not ?

What if it is an alt with totally different looks - is it the same persona for you ?

Wednesday, June 27, 2007

An edge between FL and SL: The future of the internet radio...

Yesterday there was a "silence day" for the internet radio.

The folks dealing with the music apparently do not like the fact that the world is *changing*. They think that the cash cow does not bring enough milk, and the internet radios have a great potential for being milked more.

And while the clever folks note that the world is flattening, the others seemingly fail to realise that.

If you happen to read this from the US - take a look, for example, at DI's coverage of this gem of human creativity of a happening, buzz your nearest authorized bureaucracy representative and bug about that.

In parallel, I think we should just shift the focus towards the CC-licensed music, such that this problem disappears. Although, indeed, there will always be people who do not honor the CC licensing, but heck, CC would at least allow to limit their profits in the long term.

Quick googling shows that there are already some aggregation points for the CC-licensed music (apologies for "trance bias" - but it's my plat du jour lately)



In short - whining to senators is one thing, but I think a much better move would be just to lure the musicians away from those who want the royalties to those who promote freedom.

"No music - no royalties". And the problem solved for good.

upd: Transfer One + Magicdust EP does sound pretty neat (to my taste, that is). Taste it.

When you need to shoot the birds... pick the right cannon!

Today's post will be about... engineering, surprisingly. And a little bit about knowing the requirements upfront.

This is a story that happened back around RL's New Year's Eve, on a skate rink near the Paradize Lost. Helena was there, having fun herself and entertaining the public, and during the casual small talk she mentioned she wanted to make a snowmen contest. Which obviously implies voting.

It was a very interesting proposition - I usually do not script just for "pure money" (well, I do only if the money/time spent ratio is sufficiently high), but rather mainly for the sake of making something new and something I have not done before. Voting system I have not done by then yet.

So - the first question - "how many people are you gonna have voting?" - "don't know" - "well, 1000, 10000 or 10000 ?" - "still do not know".

Ok, I say for myself - let's take 50000.

"How many participants?" - "Not sure" - "less than 100?" - "yes".

Ok, this is something to start with. In any case, the overall design was pretty clear:


  • one prim per contestant to accept the votes, and display the results
  • some kind of validation storage, which would store the keys of the avatars who has already voted, to avoid double-voting.
  • the contestant prims would check out with the validation storage, whether the person has already voted, and if not - then store the vote, and increase the counter for that particular prim.
  • ideally, i would somehow be able to remember who voted for whom, and have the results auditable.



So, according to the requirements, I need to store some 50000 key-key pairs somewhere... (considering that an LSL script does not even get that many *bytes* of memory, it had to be something modular).

So, the first module is a "single storage script". An atomic piece, which can hold something like 100 pairs. Now, let's put ten of these into a prim - we get a storage unit, which can hold a thousand. The search is not fantastically efficient, but still...

Now we link a bunch of these "child storage units" to a single "master prim" which does the high-level "memory management" and figures which ones are full, where to search, etc.

All right. I spend something like 3 full days (there were some days off) to build this monster, and then was just about to show it, when I got invited to an event somewhere, and there was a griefer attack there.

The net result of the exercise was that I had lost all my hair. It took me a while to find back the place where I bought it, and buy another copy, but this loss of hair has prevented me from losing much more hair - when I thought about the same thing messing up my "superstorage".

Then I said "no way".

And hence a much more simple and almost as robust system was born. Indeed, I decided to use an external server. Being a little bit of a paranoid, I do not run any scripts on web server. Not at all. No exceptions. And I did not want to install mysql/php/whatnot, just for this. Besides, the machine I use is very very weak - so a theoretical spike in the requests I would not be able to handle.

So I needed another way... Ok, here we go. Create a new virtual host just for this, and write a script to continuously monitor its logfile.

The voting attempts are done via requests "/vote/voter-key-here?for-whom-to-vote" - if there is something, then the person has already voted. If not - then the HTTP server returns "file not found" and the vote can be recorded.

Needless to say, that this opens a race condition for double-voting for more than candidate during the time window when the request has been already sent, but not yet processed by the script (which monitors the requests in the logfile, and creates the file in "/vote" directory accordingly. However since it was not a military-grade application I did assume this margin of error would be OK. But actually I think I still tackled that. :-)

The files "/candidate/candidate-key-here" would contain the counters for each of the contestants, which would equal to the number of voices - and since the script that processes the votes would be single-threaded - I get rid of the concurrency issue - since the results are incremented centraly.

I do have an auditable log of all the votes - it is simply a htaccess.log - so if something messes up or I find a bug in the script - I can always just re-run it, first wiping out the files with the counters. Any surge is ok - since even my dumb server can still serve static pages reasonably fast - and any other computations I do at the pace *I* determine.

The "tail-and-count-votes" script on the server side I decided to write in Ruby - it is a pretty high-level and readable language, took around 40 minutes.

The voting prims were easy - just cut out the fat from the previous version that is not needed anymore...

So the overall result was ready in under half a day, with no significant brain strain - it was very simple.



There are a few lessons I grabbed out of this:


  • It is good to plan for scalability. But sometimes it helps to consider the "natural upper bounds" more carefully.
  • The first most obvious solution (prototype?) is not the best, but it teaches you. Make sure you can do it fast, and then proceed to "the real thing".
  • Don't be afraid to think outside the (LSL) box.


After some testing and a couple of bugs fixed, the voting system ran for a few weeks. The overall number of participants was probably around couple of hundred, and seems to have worked flawlessly, I did not get any single IM with complaints.

But maybe they were just merciful :-)

Monday, June 25, 2007

Voice Map on Secondlife website

I assume everyone knows about it, in which case it is going to be just a bookmark for myself...

The secondlife.com website has a voice map which gives the graphical view of all the voice-enabled regions out there.

Sunday, June 24, 2007

I got shot... now I'm history! (and a bit of art too)

When I came to visit Vint to the SL04, there was already quite a crowd of visitors who were there chatting.

The discussion for some time revolved around the vivisection, so to ensure the safety of all non-human avies within the immediate reach, I jumped on the wall to keep an eye on the discussion - the humans are so unpredictable at times! (and boringly predictable at all the others, I must note).

This is where I got shot...

No, no, noone attempted to kill me - it was a friendly photoshot from Looker. Thanks, it sure feels fun.

That's how I became a live exhibit and a small part of SL history.

Although, the essay by Extropia DaSilva argues we all very much may be a part of something quite big and interesting, with this SL thing..

Hopefully I'm still around in 2029 to see who wins - Kurzweil or Kapor ? What are your opinions ?

Saturday, June 23, 2007

OpenSim fun =)

opensim

I've been telling to the folks about the OpenSim (quietly), however, reading yesterday on their page that "OpenSim is not illegal", I think it is worth shooting a small article about it.
(The OpenSim is a part of a bigger project OpenMetaverse)

So, what is it ? Basically - it's what it is - it's your own sim! (for which you do not need to pay - just launch it on your machine).

Now before you jump and start clapping your hands, a word of caution: this is a very very very early stage of the development!

You can login (although at this time not with the latest client, it seems - I am able to connect from linux 1.16 windlight firstlook and from windows 1.17, but not from the 1.18 beta client),
and you can walk and build.

Looks like at this moment in time the uploading of the textures in the latest version does not work either.

But hey! It is FREE!


There is an initial support for two (!) physics engines - however the "more stable" one I could not test since it runs on windows-only. The linux one is still a bit too green to be used.

I've started an opensim in sandbox mode (meaning: it is only one sim, and it is also its own login server), in case you are curious to try :-)

So, the instructions:


  1. Add yourself an account. For this, go to http://petitbe.be:9000/Admin - the password will be "Admin", click the "Accounts" button at the bottom, and add yourself an account. WARNING: do NOT use the same password as for "real" SL. I can NOT guarantee anything about the data on this sim, so use something silly and easy to remember for the password.
  2. Create a new shortcut for the SecondLife (nb: Do keep the current shortcut!!), and add "-loginuri http://petitbe.be:9000/" to the list of the parameters for the secondlife client.
    (this step details it for windows users, I assume the mac and linux addicts will be able to figure it out =)
  3. Click the shortcut and login to my opensim! :)


You will note that by default you do not have any skin, etc, etc.
Unfortunately the appearance is "locked" at the moment - not sure why. So the only variations we can do is skin/clothes - create new, and wear them.

The "default" shape does not really look like Ruth. I did not find whether there is a name already for it :-)

Now, what is this useful for ?

Well, so far just for mere fun, and for realising the "real" SL is not that bad =)

But I think that overtime it might become quite a useful beast, if we all make an effort - a number of uses for a 3D environment like this is uncountable, IMHO.

P.S. the OpenSim can work as a part of the open grid, I am just a bit lazy now to get it into it, maybe later on. And I write about the grid in some subsequent post.

UPD: Do not try ever to send the IMs - this borks the whole thing, apparently :)

Also - the server on which this is running is abysmally tiny and slow - 128M of RAM, so it looks like the beast will need to be regularly restarted.

UPD2: looks like it did not survive for very long time, so for now I have stopped it.. you can try building your own though, if you have a linux pc nearby. (and I think windows would also work, I just did not try it out so far).

SecondLife client (almost) without the memory leaks...

Nicholaz is making a patched version of the 1.17.0 version of the SecondLife client. Eventually his fixes make it to the "official" client, however, he makes his own version available for download as well.

if the Linden-patched version does not work well for you, you might wanna give this one a ride.

I'd like to thank him for this awesome job that he is doing.

(wondering - maybe we should make a campaign to have some donations made to the guy ?)

libsecondlife check-up & some more crash debugging

Today was the time to try out where is the libsecondlife since the last time i played with it..

I quickly checked out the testclient - more commands have been added since the last time I tried, now I can sit on things, touch things, stand up, walk, follow someone else, im, whisper, shout - quite a reasonable set of activities :-)

while testing it I had launched the windlight firstlook client, and I think I figured out why Vint was crashing with the firstlook - looks like I got the same problem on it, with the exception that the debug output is dumped...

So, there are two reasons:


  1. close the IM window
  2. group notice or group chat event (not sure yet)


both seem to be related to some packet being unhandled.

Needless to say, that the testclient.exe from the libsecondlife handles everything just great.

Wonder how many crashes are actually caused by the improper network traffic - if many/most - maybe we can have a sanitizing proxy :)

Tuesday, June 19, 2007

All big things start small...

or, a long and obscure fairy tale about SL, and SLuniverse, and SLeverything :-)

There is not going to be any links in this post, nor the "real SL names" mentioned (although I do thank a lot anonymously those who made this post possible), to avoid inadvertent PR which I do not think is appropriate for this occasion - these are my personal conclusions of an SL avatar and I would prefer them to serve only my selfishness :-). If someone recognizes themselves in this post - this event is purely coincidental. I'll lay it out in a series of wide splashes, which may or may not be related with each other - it is up to yourself to decide...

First, there is a communications culture. If you think your communications party's point of view is not the same as yours, you never ask them "are you nuts?". Repeat after me. Never. Ask. Them. Are. You. Nuts. Good, so I think now this is quite a clear message. The reason for that is twofold - first, you might offend the other party. Not really the case with me - as I find the ill-tempered communications standards merely being the consequence of the lack of general tact - which is really none of my business to be a replacement for the missing educational classes; However, there are people who might not understand such a "sense of humor", and will get offended - which is unfortunate, right ? The second reason, being purely pragmatic and selfish - making others unhappy, despite of being a reasonably inexpensive way to achieve the relative happiness, does reduce the number of those willing to be considered as the "ground level".

The amount of work. It is a very frequent misconception that I have seen over and over again - that every task needs to be accomplished with a half-a-liter blood loss by the person accomplishing it. It's all too tempting to see a professional working quickly and "easily" and judge ("wow! how comes they are even being paid for that ? It's just all too easy!") There's probably a dozen or so areas which I might name off top of my head, which exhibit these properties, however, I would think it is a mistake to think that if any average person can try themselves in that area, everyone in that area is just an average joker. Color blindness is quite not a proof of the non-existence of colors.

All big thing start small. This is really the quint-essence of today's world for me. The internet has society now a highly nonlinear dynamic system - you can no longer consider approximate the "internet crowd" by a gaussian noise cloud. It is much more chaotic, which may even make it possible to predict it at macro level, however assuming you know where the bifurcation points are :) Each individual may be such a bifurcation point, and disrespect to an individual, whatever your opinion is, may unleash one of those unexpected bifurcation points. By no means I am a preaching saint, however, it is just a practical conclusion that I made for myself and which I usually try to follow.

Excuses. There are always rational and even the truthfully sounding excuses for anything. For the others that is. Finding an excuse for oneself in front of oneself is eventually bound to fail in a most painful for oneself way - regret. The most interesting property is that the artificially built system of such a kind tend to get bulkier and bulkier overtime, harder and harder to maintain, and eventually becomes impractical.

Hmm. Looking at the number of words, I think this post sucks. As far as I know - every good post has to have pictures. People like visual stuff, no ?

Totally coincidentally, yesterday I've stumbled across a piece of art which would be a brilliant illustration to my musings. I can only applaud the humor, generosity and self-criticism of the author who made such a beautiful piece of art =) Thank you!

paradox



Upd: spellcheck("generoucity") = "generosity". Must have mixed it up with genericity. Thanks Vint! :) Although the term "genericity" might attribute as well. But I promise work hard not to create my own words!! :-) And, no, I do not use the spell-checker. All the typos are a fully authentic work of mine. :)

Monday, June 18, 2007

A recipe of attracting the customers... *not*

If you are an owner of the business that you want to live and prosper, please stop reading here =) - however, if you have an evil plan to slowly and painfully ruin the trust of your customers - this post would be precisely for you - I hope you would find it useful.

I've been always doing a bit of banking in SL - somewhat enough to give me a reasonably steady income which is noticeable, rather than just holding the stuff in my pocket.

Throughout my journeys I've once hit a teller machine which was promising reasonably low rates to consider it not so risky, and reasonably high to bother with this at all.

I've paid L$1 to the ATM to create the account and maybe return to it later, grabbed the landmark and continued with my journeys.

A few days later I received an invitation to join the group, which I agreed with (hmm nice - they remember even the tiny customers!), and figured one of these days I might go and try to see what they have to offer by depositing some smaller 5-digit amount and see what happens.

Unfortunately, this good intention was shot on the spot by the announcement on the *bank* group about a *poker* club. An IM to the person sending this revealed that
the Foo Bar and his partner own both the bank and the poker. My query whether this is appropriate behaviour did not seem to trigger any sort of the apologies or even confusion - apparently the biggest part of their customers would not mind such spam.

Needless to say, I am no longer in the group and definitely not their customer...

But those who know me have always said I can not be counted as an "average customer" for any kind of businesses, except maybe for funeral services - but I'm not very picky on that one, since I would not be there anyway to enjoy it... :-)

Sunday, June 17, 2007

Yesterday's party

*yawn* (waking up far-past-noon). So, it started nicely at Veyron's terrace, with people being dressed with various fleur of sci-fi. I took my favourite matrix suit - I like black, and the sunglasses help to avoid surprised looks in case I fall asleep for a few seconds.

blogger_party_002

As the sun was going to set, the atmosphere was becoming more and more mysterious..

blogger_party_008

At an extremum of this came Vint (*kiss*, missed ya) and brought the moon for everyone to have fun.

blogger_party_012

We even had a cow, who was a bit surprised with all these lights:

blogger_party_014

And afterwards I did not make any pictures, so I omit describing anything as well :-)

Saturday, June 16, 2007

The first look... err... hear.. at voice

I got envious to all these people talking about voice, not crashing, and all. So I got the firstlook client and tried the voice with a few friends today.

First - it does crash for me :) The version without the voice is relatively stable..

Voice: its fun. Well, when it works that is. We did try a few times to make the voice IM - this was only blowing up the whole voice thing, requiring the restart.

However, to our joy, it did work in the group chat. It was a lot of fun indeed. we also tried various voice morphers, however it adds to instability (for me that is), or to slowness (for another person), and the rest were running without them...

The experience indeed feels weird, however I think there is a place for both IM and voice - and the current uneasyness is due to the fact that it is just so unusual.

Tuesday, June 12, 2007

Simple thing which improve your security, that frequently get overlooked...

While the others are promising the blue skies, free cookies (free browser cookies, I mean), here's some basic practical advice for you on behalf of the Grid Democracy Party, that you can put to use regardless of your SLpolitical SLpreferences. While being a *very* basic thing, I've seen it overlooked quite a few times. If you know all this - then I am glad for you :-)

This short note will talk about your "private" land mostly - not necessarily the clubs or other public places - there the settings might be slightly different to ensure the maximum comfort of the visitors, and these settings do not fit well.

1) Have a "visitor group", with which you set the land:

safesettings-1

2) Minimize the potential dangerous activities on the land by "strangers":

safesettings-2

What this does ?

First, about the options that should be unchecked:


  • Edit Terrain. You do not want others to tweak your carefully made landscaping.
  • Create objects: All residents. You do not really want random object creation on your private land ?
  • Object entry: All residents. Same goes about the objects from non-group entering from other parcels.
  • Run scripts: All residents. While this setting only works on small heights, it at least covers that area, if you want to be safe.


Now, about those that we have checked


  • Safe (no damage). Unless you are planning to turn your land into a battlespace, you most probably would not need this :-)
  • Restrict pushing. This will help against some very basic forms of griefing (again, why would you want to push someone except if it is a boxing ring ?)

  • Create objects: group. You trust your friends to create the objects and clean up later, right ? If no - why would they be in your guest group ?
  • Object Entry: group. Even though your friends did not necessarily rez the objects on the other plots, no harm in turning this on if you did turn the other one on.
  • Run scripts: group. Same remark as in previous scripts (that was disabled) - useful for the areas just above ground to allow your friends' AO and other gadgets to work.


Then, the teleport point. If you would like to have people that teleport to your land, to land on a certain point - set this point, so they do not get into the middle of your kitchen or some more private place (yeah I would consider my kitchen private, if only I had it! :)

I guess that's it for this simple post - hope it helps someone to avoid some troubles.

I do have some more creative (and a *bit* more complex :) ideas in mind, stay tuned...

Sunday, June 10, 2007

Spam breakfast...

Did you know that you could eat spam for breakfast ? Me neither..

Apparently there's a recipe.

I have only one question - do they recycle the spam or the spammers ? The latter would've been much more straightforward to get the meat, although I am still not convinced it would be too delicious... :)

Saturday, June 9, 2007

DeliHUD 2-week public beta starting NOW!

In one of the previous posts I've mentioned I was coding a bit...

The alpha tests seem to have gone reasonably well, so I am opening the beast to the public beta.

What is it: it is an in-world interface to del.icio.us, to retrieve and visit the SLURLs that you would pick up on blogs and other out-of-world sources.

Setup: create a notecard with two lines - first one being your del.icio.us username, the second being your del.icio.us password, then wear the hud, and drop the notecard onto it.

The SLURLs that you want to visit from in-world should have 2 tags: "slurl" and "visit". Then they will be picked up by the HUD and shown to you.
By clicking on the text shown in the HUD, you will be offered a TP to the destination, and after you have visited the place and possibly created a LM for it, you can click on the red square next to the text to remove the "visit" tag - after which it will no longer show in the list.

Where to pick it up ? I've put a vendor next to the primskirtbuilder area (see the banner on the right side of the blog), as I was a bit lazy to tweak the script, I've put the symbolic price of L$1 to still make it function.

The beta lasts till 25th of June, after which time all the beta copies will self-destruct - and either we might have another round of beta, or if the beta proves successful and bug-free, then I start distributing it.

Please put your comments about the behaviour/functionality/etc. into the comments to this post, so we avoid any duplicate reports.

Friday, June 8, 2007

Adding the mood...

I deliberately did not talk too much about states and asked a question about state_entry :)

Today we go with a slightly more interesting example to try.

Create a new object, and put the following script into it.


default
{
state_entry()
{
llOwnerSay("I am serious");
}
on_rez(integer i)
{
llOwnerSay("rezzed serious");
}

touch_start(integer total_number)
{
llOwnerSay("changing state from serious to happy...");
state happy;
}
}
state happy
{
state_entry()
{
llOwnerSay("I am happy!");
}

on_rez(integer i)
{
llOwnerSay("rezzed happy");
}

touch_start(integer total_number)
{
llOwnerSay("changing state from happy to serious...");
state default;
}

}





this script has two states, which represent the moods - one - default - is serious, and the other is "happy". (hmm can I be happy while still being serious ? I guess so, but anyway let's assume it is not the case for training purposes :)

This script switches to another state when the object is being touched.

By playing with it, we can find few interesting things:

  1. the "state_entry()" gets called every time the object enters the state
  2. after script editing the first state is always "default"
  3. taking the running script into the inventory does not change its state


Why would the states be useful ? They could be helpful to alter the behaviour of the script you have - like in this case, the touch of the object causes different reactions.

Also, you can see the logic in the script quite easily. However, changing the state does reset some things, for example, listeners which are installed using llListen, so this is something to keep in mind.

Homerwork:

  1. modify the script such that it contains the third state, "sad", and the clicks
    on the object cause transition serious->sad->happy-serious (etc).
  2. take a look at the state_exit event, and try to put some wording into it - and see when it does get executed.


This should provide enough material to experiment with, till the next post.

If you got an IM from a stranger and desperately want to reply..

...but the search is down... you can use the IM relay that I quickly cooked today.

it's in the primskirtbuilder area, grab the copy and follow the instructions...

Note: not all names might work, only those that are in the w-hat database.

Thursday, June 7, 2007

Poly ticks

Eccentrically centric (ad)venture capitalist, and all in all exclusively positive av (the negative traits are printed in tiny letters on the backside of this browser window (grab the viewer here if you are so inclined to see) is looking for a political figure to represent his interests.

The candidate has to be:

1) female (reason: obvious)
2) smart (as a prerequisite to get the better results in (1)
3) cute and fun and enjoy the life (a decent politician has to enjoy the own life before making others' life better - otherwise the things will only get worse)

any takers ?

hmm I think I've just found precisely the candidate - Vint.

The platform looks good. The prerequisites are perfectly met. So - I VV!

What's in those bags with garbage ?

Ok, apparently the first post caused very unexpected (by me that is :) positive reaction, so let's continue.

Again, I set the pace rather slow, so that noone would stress too much.

Let's return to our small example and study those "trash bags" with curly brackets.


default
{

state_entry()
{

llSay(0, "Hello, Avatar!");
}

touch_start(integer total_number)
{

llSay(0, "Touched.");
}
}


So, first - the outermost layer. The green thing. In LSL it is called state.
Those impatient can read up about it on wiki, for the rest - just consider this construct a part of reality for now. we'll deal with it later on sometime.


Now, the blue and red things.. those are more interesting. They describe how your script should react on certain events. There're a couple of dozen of events or so which can happen - and in the above code, inside those blocks you define what to do for each of the events.

Question: why is there a brown-coloured thing for the red-coloured event ? It is a way to say "when this happens, there will be some other information arriving". For this particular case, it will be the integer, which says how many agents are just starting to touch the object.

Some homework for those interested:


  1. find out what is "state_entry()" used for
  2. what does "0" in llSay mean and do you think it is the best way to have have it used in this way ?
  3. for the daring ones: find out how to do such that only you (the owner) could hear what the script is saying.

Wednesday, June 6, 2007

Basic LSL

There's been ton of the various tutorials and such about LSL, so not sure if this would be of use for anyone... but since a couple of folks said that this might be fun, here it goes. I will take an assumption that the reader is not very well versed in coding, so it is also an opportunity for me to exercise my explanation skills - and to start really really basic. So if this is boring for you - I will try to put some more spicy stuff inbetween :)

Let's take a practical approach - pushing random buttons and seeing what happens :)

Create a cube, and hit the "New Script" within the "Content" tab.

As a result we get "New Script" which looks like this:



default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
}

touch_start(integer total_number)
{
llSay(0, "Touched.");
}
}


Now, what what here, and why so many curly braces ?

if you look closer, you will see that all of this seems to be similar - a series of nested structures.

And at highlevel it looks like this:

some-name(maybe brackets and some more brackets)
{
some-inside-stuff
}

This kind of logic is very frequently used in computer science - and not only.
When you have tons of garbage that you do not want to see spreading around the house, you take a bag, put all the garbage in - and put the label "garbage". And you know that it contains various garbage.

Same in the computer science - the concept of packing multiple things and then referring to them by a single name allows to abstract away "the garbage" so that you can operate at a higher level of abstraction.

Tuesday, June 5, 2007

Thanks to Vint...

...Everyone can now enjoy this nicely looking ad instead of a catastrophic hack that I had made. Vint, did I already say today you're great ? :-)

thanks_vint

p.s. yeah, and my snapshotting skills are not much better than my photoshop skills, I know :-))

Bit more coding...

Zoe has mentioned something interesting (and thanks a lot to Vint for pointing me to it...)

The inworld beast is currently in early alpha cycles.

Sunday, June 3, 2007

Bloodsucking creative teleporter

Today I finally got myself to teach my small pet peeve (aka "The Bloodsucker") to do something more useful rather than just wearing the holes in my shoulder bone...

Now it allows me to push the current position to the del.icio.us, and for everyone else it gives a convenient service of telling the SLURL of the current place where I am.

The complementary function (which this animal should assume soon) is a bracelet, which holds the list of all the sims, and teleports into the middle of the random sim when clicked.

The linkroll on the right represents exclusively slurl, stored on del.icio.us, derived mostly from this method (there are old links there, do not pay much attention to them, it was a previous project).

A question: would the folks find such a beast useful ? what functions would integration to del.icio.us have ?

Saturday, June 2, 2007

live music: Bonfire, tres bon!

I've been to a nice music event today - Bonfire 2007 festival, made on the sim of the Colorado Technical university (Colorado Tech). It's still going on - 24h of live music!!!

Awesome atmosphere, and diverse music. The feeling was very much like that of a real event - very professionally built stage, and smooth mixing with some relevant blabla inbetween the artist shows :-)
Very nicely done, folks! (The only caveat was that I did feel thirsty the entire time, but maybe it is just my ill reflexes :-)

coloradotech



And, speaking about the live music... a shameless plug :-) I'm gonna be playing tomorrow @10am PDT (which is 7pm CET, so euro-friendly) @Cherry - so feel free to drop by...