Experiments

You are currently browsing the archive for the Experiments category.

One matter upon which I have been thinking recently is the matter of Authentication between Objects within Second Life.

For many systems it is necessary for them to be able to communicate with each other only if they share a common secret - a “password” is an example, and one used here. For instance, with a combat system, a cannonball should only be able to tell a ship that it has been struck and should take damage if it is part of the same “network”, or game (though clearly Piracy is Not A Game) as the ship itself.

In cases where all items are owned by the same person this is simple - one merely checks that the owner keys, which are I believe unforgeable, are the same, using some line such as if (llGetOwnerKey(id) != llGetOwner()) return; in one’s listen() event, when hearing a command. However, when objects may be owned by pretty much anyone, this will not work, and merely having the objects communicating on an unusual channel (-894029345, say) will not provide complete security, as listening devices exist which can scan for these things.

I was thinking of something a little more secure, yet remaining in-world and not requiring awkward and slow communication with, say, a server that keeps a record of permitted owners. To this end I created a small script this afternoon which demonstrates a challenge-response system between objects.

The basic functioning works thusly: each object holds a password, and when object A wishes to instruct object B to do something, B says “Hold on a second! I don’t know who you are. We must compare passwords. But clearly we cannot do so on an open channel - anyone might be listening. Here is a random integer for you as a challenge, to use as a salt in an MD5 function.”

A hears this integer and applies that salt to the password, then says the resulted salted password again. The important point about the function llMD5String and MD5 encryption in general is that, when a string is encrypted with a particular salt, there is no practical way to return to the original string given the result. So, even if someone is listening in and hears the salted password, it is of no use in determining the original password - but B can also salt the password with the same integer and compare the two to see if the original passwords were the same.

If B manages to do this it then says “right, you seem to know the password properly, I will allow you to instruct me” and, for the next minute, allows communications from that key to act on it. A then must repeat whatever command was issued.

The above may seem a little baffling if one has never heard of this sort of thing but I dare say examination of the script may make it clearer. Contrariwise, I confess that I really do not know an awful lot about this stuff compared to the experts and would welcome comments. I have posted the script on my Scripting Colloquium for simpler discussion, but here is as good a place as any too I suppose.

stippled_script2.jpgWhilst somewhat re-enabled in Aethernet terms, I am still unable to enter the Grid itself, and have been attempting to ameliorate the symptoms of my withdrawal with such things as the Scripting Section of the Official Forums.

To tell the truth I have been there infrequently of late. Previously I would spend many hours bickering over semicolons, but I have found it drawing me less and less in recent months until I barely ever participate unless at an extremely loose end. I am not entirely sure what caused this change; perhaps it was the closure of many parts of it and the enforcement of apparently somewhat arbitary conditions, making the place far less welcoming as a whole, or perhaps there was some Social Shift, with either the tenor of new participants changing or the departure of those I previously enjoyed engaging with. Or, perhaps, it is entirely down to a change in my own character.

One thing that most definitely has put me off ever returning, or at least offering actual Script-Code Solutions, is the current impossibility of posting up any sort of Code in any sort of Legible Form. I fear that I became infuriated by this and vowed never to return, or at least never to attempt to put up examples again. This is yet another manifestation of the dread [#WEB-156] BBCode not working on official SL Forums, one the annoyance of which I had not fully appreciated (and believe me, I have been incredibly annoyed by it already). This one thing now makes the huge Scripting Library unreadable and greatly discourages any further contributions, as well as vastly increasing the effort required to actually help anyone with their own problems or post solutions. Short queries and functions and theoretical discussions are bearable, but the prospect of struggling through some poor novice’s hundred lines of unformatted code in order to chase down curly brackets is enough to make one simply not bother.

{}?

It all infuriates me even more as there are dozens of people eager to help with this, perhaps the most opaque skill within Second Life for a beginner or Non-Technical Sort to deal with, yet they face obstacles which even have the effect of making previous stored advice less valuable. A grid full of professional Old Resident engineers, lonely newer auto-didacts and terrible ancient scripts handed down from generation to generation due to the lack of anything more recent and efficient is not the sort of vision I have ever had, and discussion and mutual education at least goes some way to preventing this dystopia and helping the broadest group and greatest number of people. Even if one has no intention of dirtying one’s hands with any sort of Coding, one may still benefit from proper samples to be cut and pasted directly into an In-World Device.

As a small sticking-plaster I have now set up my own Scripting Colloquium, where one might post Code in a manner which can actually be Read (as well as Images and Links and Things In Italics and So On). These things rarely survive for more than a few weeks, and it may die an undignified death, but I would encourage anyone with scripts and questions about scripts who is put off discussion within the Official Forums by this or other matters to visit and participate. At the least it may build up some useable examples.

Hello World - in Semaphore from Ordinal Malaprop on Vimeo.

Well, that is really just a title to grab Attention, but I have been this evening working on a script which translates Letters and Numbers into the waving of Semaphore Flags (in the above case, in the Oscar pattern). The message sent there should be fairly easily deciphered. I think that it is all correct, but to be quite frank, I cannot myself easily decipher Semaphore, thus I may have missed a detail.

The script, however, will interpret anything said on channel 9 into a series of such gestures, and one is advised to have Flags or Beacons or some such in hand so that onlookers may more easily receive the signal. Given sufficient time, I shall post the script here for general consumption. (I shall also provide a set of flags and the scripted attachment for sale at a very small cost, in order to recoup my uploading expenses for the Animations and such.)

Addition: Please see my following post for details of how to obtain the thing.

I have received some very kind compliments regarding the Mechanical Dragonfly Wings that I have been seen to wear in recent days. These are in development for final sale, a difficult process as they bear flight enhancements, the behaviour of which is a very personal matter, but I do have a short piece of cinema regarding the “double-tap” behaviour.

Vimeo, unfortunately, at this time, has decided to “upgrade” itself. All Second Life residents will be aware of the exact meaning of this phrase; nothing looks as it used to, and random functions do not work. Thus, the above is on Google Video, much as it is an inferior service.

Whilst I am waiting for the latest working version of the econd Life Client Thing to squeeze itself through the Aethernetical Pipes and plop onto my desk, I suppose that I might as well write a little about my experiments with automated photography, mentioned previously.

It has been said by myself (and, to be fair, others) many times that there is no way for a Script to take a Picture, and this is, speaking strictly literally, true. Scripts cannot take Photographs. However, there are ways of getting around this issue, as I have found recently.

The procedure at base works along the following lines: a script, as is generally known, can send a message to an outside Aethernet Server. That server can retain the message that is sent (”take a picture please”). One’s own personal Engine can also receive messages from the same Server, and one’s own Engine is furthermore capable of taking pictures - at least, of the current screen, not nearly as good as the in-world photography tool but hey ho.

To this effect I have an attachment which, at regular intervals, sends off a message to my own Server containing my current whereabouts. I also have a small program running on my own Engine, which contacts my Server regularly and says “are there any messages waiting?” If so, it downloads the information, takes a picture of my current screen, resizes it to appropriately small dimensions and writes my location onto a little bar at the top (also disguising the ugly top-of-the-window part of said screenshot). Since the aim here is to create a record of my activities for my own enlightenment, it also saves the location and a few other data to a daily log.

A SLifelog frame

The time delay between the making of the request and the taking of the screenshot is less than ten seconds, which is not too bad, though it does mean that my precise location is not precisely appropriate to the screenshot, but, well, hey ho again. More rapid polling of the server would help to eliminate this. Oh - the attachment that I wear can be turned on and off, as well. After it sends my location to the Server and my Engine receives it and takes a shot, that information is then deleted from the Server, so when information stops being sent no pictures are taken.

Finally, when all is done with, the pictures are thrown together in a pile and turned into a piece of Cinema, which speeds up my activities dramatically, one minute becoming one second of time. Here, for instance, one might see me building things, then being unsatisfied with them and deleting them (a common pastime):

SLifelog 2007-06-24 - building things and deleting them from Ordinal Malaprop

For technical types, the script on my own Engine is written in Perl, using curl to access a page on ordinalmalaprop.com, then using the OS X utility screencapture (helpfully pointed out to me by Mr Westbrook of the Electric Sheep) to, er, capture the screen. The ridiculously cryptic yet powerful program mencoder is used to compile a video for the day. Should I have the time it would be more efficient for the thing to run using cron or launchd or some such but to be fair, I am not terribly good with these particular tools and have concentrated more on getting it to work in the first place. Addendum: In practice, to produce the above, I actually used ffmpeg, which has options to pad the pictures to the correct size, and may switch to the use of that tool in general.

Ah - I see that the older client is sitting on my desk as I write this, wailing away in its birth throes, and I must attend. Actual scripts etc to follow.

A perpetual problem of mine is that I am unable to concentrate on one thing for more than about, oh, an afternoon, leading to the unfortunate situation where possible projects and Matters Upon Which To Write flare brightly and then burn out within moments, like phosphorus sparrows. No sooner do I plan to write a Definitive Article upon some subject, which must be Gotten Right, than some new shiny object appears and drives the original one completely away from my attention.

The result of this is that I am rather poor at actually writing anything, as perfectionism restrains me from making an entry on something incomplete, yet I do not have the urge to complete it, and it is only when I reach a level of self-disgust at this that I throw out whatever peculiar half-finished objects that remain in my mind into this Journal, often in the form of Bullet Points. I believe that it was easier in my earlier days, when I was rarely thinking about more than three things at one time.

Enough of this preambling though; I will do my best to clear the decks. The subject of this entry is something that I call the Twitterbomb, though really it isn’t much of a bomb, unless one considers very slow-moving fragments that are in any case phantom to be dangerous. This was actually mentioned previously by Nick Wilson writing in Metaversed as he is a proper journalist who investigates things and writes about them, whereas I am no such thing and do not even have a picture of my own creation at the time of writing.

The Twitterbomb, as Mr Wilson says and as I mention in the comment section there, is a device for the Visualisation of timed and differently-authored data; the Twitter friends timeline is the easiest to work with, as it collects data into a single feed, but I suppose RSS feeds and such could be used. There is a central “bomb”, which reads in Twitter data via a proxy (a stripped-down version of the Twitterbox one) throws out differently-coloured “fragments” - the angle of movement and colour of these fragments is individual to each different author, thus each person’s output is represented by a line of tweets stretching out from the centre. Each fragment’s size is proportional to the number of letters in the tweet.

The fragments move outwards at a constant speed, with their distance from the bomb being a function of their age. There is a configurable maximum age, with fragments disappearing once they reach this. (Once rezzed, the fragments are independent, and with a busy friends timeline this could result in an awful lot of prims being around, thus best to use this in a fairly empty lot.)

I confess to not having a specific target to achieve here, but it is a toy that enables one to play with the possibilities of visualising data in Three Dimensional Form. One can look at the fragments produced and see, say, how active an individual is and their “rhythm” by observing the “clumping” and size of clumps produced; a wordy but regular poster will have fat fragments evenly spaced, someone who posts in bursts of short pieces will have thin lines separated by empty space and so on. A particularly significant event for one’s friends will be marked by a “shell” of tweets all appearing at the same time and expanding outwards. Changes could certainly be made to the way the fragments are emitted to test different concepts of visualisation.

I say all this, but actually, in practice I have Given Up on the Twitterbomb for the moment - which is likely to mean forever - since Twitter has taken to caching my requests and not giving me recent updates reliably at all. This is odd, since the Twitterbox seems to be working perfectly well, or at least is when both Twitter and SL are working at the same time (a combination of reliabilities that one is not advised to bet one’s life or significant bodily organs upon). With this in mind, once I am able to return to the world I shall be sure to post the relevant Code here.

Well, that is over with in any case. Next, something else, I believe.

This afternoon I decided to experiment with the “Wings3D” program in order to at least make some slight stab towards creating a Sculpted Prim. Given that, as I said, there is no version of the thing that will actually work on my main Difference Engine, I was obliged to dredge out a previous machine of obsoletish character - but when combined with the Exporting Plug In most kindly written and provided by Omei Turnbull, it was perfectly efficacious.

I transferred the texture thus created onto my main Engine, thence to the World, and applied it to a SculptedThing, and that was where my problems began. It seems from further reading that there are at the moment issues to do with how the World stores and compresses Textures, in that there are certain changes and Artifacts which result - these are not really visible to the Naked Eye, but to an Engine which is actually using the exact values of each coloured dot as instructions rather than appreciating the whole as an work of art as most of us do - as if there were a secret code embedded in individual letters of the Bible, say, except actually true - it can result in quite ridiculous results.

Touch the photograph below, if you would, and you will be able to see the whole of my experiment, including several pictures of myself looking very unconvincing in a pair of overalls.

me with balloonbombprim

I do hope that this issue is resolved very shortly, but I feel that I should warn others on this matter. I must say though that my experience with Wings3D was most positive; the principles of it are very simple to learn even without tutoring, and I was surprisingly able to operate it perfectly satisfactorily with but a One Button Trackpad. Once compression matters disappear I have to say that anyone should be able to create simple objects as components for a larger build - I would not expect to be able to fit all of one’s details into one complex prim, but it should save a lot of time and twisting and terrible frustration.

Concerns of Lag and Presence have been frustrating me a little when it comes to Building of recent days, but I have been able at least to achieve a few things.

The first is yet another one of my Aethernetical Nonsense Works - a little thing which I call “Eventcal“. As you will know, Great and Terrible Lab has blessed us all with a little shared Diary of Events, in which anyone may place items and which anyone may read; it is, however, a bit tricky to use at times, and some of us would wish to use it in concert with our own Diaries (Aethernetical or Otherwise) more easily.

At the moment one may view these Events outside of the Grid, but I have found it more convenient to view and note them using such other things as “Google Calendar”. With this in mind I produced a minor Aethernet Automaton which, when asked, rifles through the afore-linked section for all of the events assigned to a particular category occurring in the next seven days and gives them to you in a format that is generally Machine-Legible (named “iCal”).

The upshot of all of this is that this thing allows one to subscribe to a particular Events category with Google Calendar, the Apple program iCal, Outlook (I believe - I have not tried this) or in fact anything which understands this widely-accepted way of sharing calendars. If this sounds like something of interest to you, please visit the Eventcal page for more information as to how to use it yourself.

~*~

Dagger, in hand The second is a more general project; my experiences with constructing my Galvanic Swordstick recently, and certain issues arising regarding our Regrettably Inevitable Conflict (mostly Standards) left me wishing that I - and others - were able to simply use some form of Generally Compatible System of Personal Combat. When I speak of this I am really talking about something along the lines of the systems mentioned in my Standards post, in other words, a script which anyone might drop into a hand or other weapon, control via Link Messages and use to Engage others similarly equipped.

I considered a wide-scale, “persistent” system of some sort, which would keep details on one’s health and injuries and so on in an Aethernet Data Archive tied to one’s identity, but this struck me as missing the point somewhat - whilst it would be an interesting system and likely diverting in the long term for a certain subset of duellists (and perhaps something I might work on out of interest’s sake) the sort of communities where this is useful are fairly uncommon, usually have their own systems already and are not ones in which I live.

For most potential combatants it is quite enough to have the ability to have occasional battles with similarly-equipped people, without having to either have the power to create, or risk entering, a Combat Zone. Furthermore, a persistent system might give the wrong impression of Caledon, which is a mostly very peaceful place; I do not wish to have random folk accosting me for martial purposes, myself.

At the moment, the system works on a sensor and chat basis, with a central script in each weapon that, when activated:

  1. announces when the wearer has activated or deactivated the system;
  2. receives requests via link message to strike with a certain force - each one has an appropriate time delay, so that one may launch many quick but light attacks, or one slow but very dangerous one, or something in-between;
  3. senses when a target should be hit on such an attack, and broadcasts a message saying that an appropriate hit has been scored;
  4. receives hit messages and depletes health accordingly;
  5. when the wearer’s health has been depleted to zero, stops itself working for a certain time and holds the wearer to their position (also starting an appropriate “fall down and do not move” animation) until such time as they have recovered, currently thirty seconds.

One thing which is also a possibility is that it will be able to affect inanimate objects containing appropriate scripts; something which I find useful during the testing period.

I shall be experimenting further with this, and releasing it for general use once things have been completed. Unfortunately, to prevent Cheating and Skullduggery, the script must remain Un-Modifiable (though free to copy and transfer) but the basic principles will certainly be outlined for those wishing to learn from my poor efforts.

For what it is worth, I have finally gotten around to releasing the latest version of the Twitterbox, which includes a number of new features and is generally a bit more reliable. Of course, at this time the Grid is… well, it is a Wednesday.

If you wish to view a list of changes from the previous version, by all means read on, and do excuse the scrappiness of my list-making.

Now, hopefully, I might be able to work on, you know, a thing, rather than a succession of ephemeral seance devices. Something which exists in its own right, and allows one to do something upon the Grid itself which one previously could not. Alas, the fractious nature of reality is making this just a tad tricky, with some of my best works now appearing foolish and error-ridden, but the time will come I’m sure when events do not just occur in random orders.

Read the rest of this entry »

A few quick notes:

  • I am informed further regarding the collection and retention of data by the Searching Homunculus by Christian Westbrook-Prior of the Electric Sheep. It seems that, every time the bot enters a sim to do its work in rescanning the contents of that sim, all previously-gathered information is wiped, and the database is then re-populated only with those items which the bot has been told it may index.

    This seems to me to be commendable practice, in that no more information is gathered than is strictly necessary, and nothing is retained past the time it takes the Searching Homunculus to reach a particular sim again. The issue of the Retention of data is one which is often ignored when considering general issues of privacy, but it is one which has proven very significant at times - a recent case reported in Other World Newspapers comes to mind. It also helps reassure those who were wondering whether the Searching retained data on all items, and only displayed those for sale - it does not. (The practice also strikes me as considerably more efficient.)

  • I am sorry to say that my SlurlBlogger does not appear to be operating properly with the “Blogger” journalling system at the moment. Google, the Company which now operates Blogger, has recently changed the Standards which it requires outsiders to operate under, and I suspect may have removed support for older protocols. Ah well. When I have the requisite time I shall take a look at this to see if I can fix it. The device continues to operate with Wordpress and others which still support the old Blogger API, mind you.

  • SLurl Safari "Interactive Map"On the subject of SLurls, readers may have noticed a certain absence of, well, the entire grid on them recently. Whilst SLurls still work in the sense of providing a little box with a caption and image and teleportation link and whatnot, they do not show anything beyond that.

    Do not be alarmed, this is known about - it appears that certain parts of the existing map system were causing excessive strain, and re-engineering is required. I personally shall continue using SLurls for the time being. For more information you might wish to consult Linden Lab’s Bug Tracking Thing; as well as this, the more technically-minded may be interested in SignpostMarv Martin’s SLOpenID project implementation of a Map API (also here).

As one with a long term interest in both Automated Information-Collecting Agents and the Analysis of their Data, I was most fascinated to see the arrival of the Sheep Labs Search, created by the Electric Sheep Company. Actually, I was a little startled, as it suddenly arrived without warning on an Easter Monday during which many people are not present, already filled with all sorts of information concerning products.

Automata and Homonculi

I thought that, to start with, I would make up a couple of terms to clarify exactly what was meant here.

  • Free Image Hosting at allyoucanupload.comAn automaton (”script bot”) exists as an object in-world and uses LSL to move about and sense. It may use outside resources to make decisions and give out information, but its interaction with the Grid will always be on the same basis as any other script. In fact all scripted objects are automata of some level, but most are not very sophisticated, simply opening or closing when touched, say. For example, my trams are automata.

  • Free Image Hosting at allyoucanupload.comA homonculus (”client bot”) uses some outside resource to control it, but appears in SL as an avatar; libsecondlife or other open client code has been used to breed this new kind of entity. Potentially it has all of the abilities and senses of a avatar; however, some of them are too hard for it to properly use. The eyes are blind, the fingers feel nothing. Sometimes this is an issue of technology but in many cases it is a matter of cognitive ability. For example, “landbots” are homunculi - they appear to be real people but in fact can only sense land for sale, decide whether it is at an appropriate price, move to it and buy it. They can do this very quickly but they are not amenable to pleas and threats, nor can they look around and decide whether the plot is pleasantly situated and would sell well (except perhaps crudely through certain algorithms, certainly with nothing like the sophistication of an actual person). Homunculi could also use Automata themselves.

  • Neither, as will become significant later on, can read.

A Quick Summary of Operations

This form of search, as far as I understand it, operates on the following basis: a search homunculus visits areas, looks for objects lying around, and remembers what they are, what parcel they are on and their price. The exact order in which it does this (does it look for parcels first then search the parcels? does it look for objects then work out where they are?) is mostly unimportant, but there are a few details of it which are important, which I shall mention later on.

Accuracy and Performance

Given that the technical details of the implementation are likely to be changed and improved I will not spend too much time talking about those; if I point to a performance issue, for instance, it will likely be fixed in the next day or two making my commentary worthless. Instead I prefer to talk about issues relating to the basic concept of grabbing the names of items for sale, which is not necessarily unique to this particular system by the ESC either, and may be replicated elsewhere in some different form.

Things which work

Sherlock Holmes explainsIt is certainly the case that the engine is able to find things for sale relating to a particular term, though how many of the possible items returned it is impossible to say, and how quickly it will update I do not know. It is also rather fast, though again I do not think that it covers the entire Grid. It does not at this point appear to reliably return results for parcel names containing keywords; I am not sure whether this is by design or some sort of error.

It is clearly an advantage to be able to search for the entire contents of a shop rather than just whatever the owner has managed to squeeze into the parcel description. I, for instance, have a selection of snowball-throwing devices in my shop, which do not have the space to put into search terms for the current Find. Nobody searching for “snowball” would come up with my shop using that, but with this new engine, they would.

It also has a head start on the current methods of Cheating The Search (a practice also euphemistically termed Search Engine Optimisation, but which basically boils down to Camping). This is not a long-term advantage, given that if it grows at all popular, specific methods of Cheating This Search will arise with great speed - “keyword spam”, the practice of putting multiple irrelevant keywords into a search merely to attract searchers, will be far far worse, given that a huge number fake for-sale objects can be created with large quantities of attached text - but for the moment it is refreshing.

One thing that it also does is return items which have a specific person as the creator, not the seller, since it is able to search for both owner and creator. Did I mention that? It is able to do that, so if you wish to see all items set for sale by a particular person you are able to. This is mostly of use to those wishing to hunt down those selling Freebies, a practice which I consider generally unethical but which I do not actually care much about for myself, except in some rare cases. There are those who would be interested in such activities, though, and they will find this function invaluable.

As a side note to the above I have seen the proposition put forward by Mr Neva that this will also allow the harassment of people who are quite legitimately reselling items that were sold for transfer with no indication that they remain free. This is, I would admit, a danger; I am not sure quite how much of a danger, as I do not know how common this sort of behaviour is in the world, but I have certainly heard of it.

Things which item-name-based search will not do

Dr WatsonThere are however some issues with this which I believe will not help.

Item names are not perfectly descriptive. They often do not relate explicitly to what is actually being sold - if one has a box with several items in it that is set to sell its Contents when bought, it doesn’t really matter what that box is called, though it might make one’s accounting a bit tricky if one has umpteen records of sales for something called “Object”. For many small business people this will not be significant, though.

As well as this, sometimes items may rely on information surrounding them which no bot can read; for instance a dress may be sold in different styles, each containing box with the same name, but each with a different texture applied to show a customer exactly what they are getting. Or, perhaps, the dress is merely sold under its name without the term “dress” - I have several items of clothing like this, where the outfit has a name that means very little, because, after all, anyone actually going to buy it will see precisely what it looks like and what the outfit contains from nearby textures and signs.

This is why I mentioned that bots cannot read, above. They currently do not have the intelligence to interpret context and terrain, and it is likely that it will be years or decades before one is able to “look” at a sign, say, and take information from it which a Human Being could receive in an instant.

In the past, naming sale boxes suitably has not been necessary, because searching has been done strictly on the basis of the name of the parcel. Introducing an extra system which does not incorporate this as well may produce some odd results.

The fatal blow, though - and I am sure that experienced Residents will have picked up on this already and be tapping their feet, wondering when I am going to come to it - is that search by item name is absolutely incapable of incorporating vendors, and an awful lot of people use vendors to sell their products. Personally I use them rarely as I prefer buying from individual boxes myself, but I do, for example, have all my free items in a “vendor”, just one which does not charge.

The result of this is that I believe that performance in practice may produce results biased towards those selling one way and not another for no good reason. There is nothing better about either method, and a system which favours one over the other will be distorted. As I said previously, the fact that the current search means that people put key phrases into parcel names and descriptions may balance this out. Still, I am not sure that this will not be a significant factor, and search engine placement is a very significant thing.

One last point - this works specifically for items for sale, not events or areas. A casino or art gallery would be disadvantaged. Not a huge issue as long as potential users are aware of this.

Ways in which item-name-based search might prove less effective than the current Find

Professor MoriartyAt this stage, by the way, I will not be considering privacy and surveillance implications; they have their own section later on.

As mentioned above the bias towards object/box sales vs vendor sales might be bad, but I am not in possession of sufficient (or any) statistics to prove this one way or the other. There is also the potential issue of people introducing deliberately libelous and/or distorted items to create a bad impression. Some enemy of mine, were I to have any, which I am sure I do not, could take one of my free and modifiable items, turn it into something disgusting and set it for sale as “Ordinal’s Nazi Ageplay Camp Chair - Earn L$$$$$ For Abusing Jewish Babies!!!!!!” which, if sufficiently repeated, would turn up on a search for my name with me as the creator. I would not be terribly happy with such a situation.

There is also the issue that sometimes, items are set for sale when actually they are not meant to be sold, either by mistake or because the original version was set as such. This is surprisingly common and even I have noticed an item set for sale in such circumstances, though a recent post perhaps indicates that it is not an issue any more; I am not sure whether the points mentioned therein refer to this issue but will be testing it when I am able.

I think that the major disadvantage here may come from the unwillingness of people - some of whom are in control of large amounts of land, such as Ms Anshe Chung - to allow the “scraping” of data by the searching homunculi on their own properties. This dramatically reduces the number of potential results. I deal with this in the forthcoming section.

Notification and Privacy

I believe that I have been reasonably balanced, and balancedly reasonable, in my treatment of the issue and the Electric Sheep Company so far; I certainly have no personal issue with any of them; and I have done such things as send bug reports which will hopefully improve the system; thus I hope I will not be taken to be suddenly partisan if I say that I consider the way in which this was announced and “rolled out” to have been handled pretty badly all told.

Holmes and Moriarty at the Reichenbach FallsThe announcement of its existence was a fait accompli on a holiday - “hello, we have scanned you and put your details on this web site, oh, you might want to opt out maybe”. I think many people were aware that ESC were working on a search engine for SL but I don’t believe anyone outside of the company had heard anything specific. If they did they didn’t tell anyone.

I can understand that a fully opt-in system would require a considerable level of organisation and bureaucracy, particularly on the mainland with its absentee landlords, probably to be honest an impractical one and one which would definitely mean the project lost a lot of surprise value. For heaven’s sake, though, a week or even a few days of grace prefixed by a message such as “We’ve got an amazing new search engine! It’s great! You’ll get loads more sales! But if you don’t want to be indexed by our bot, here’s your chance to opt out now!” would have been respectful of the well-known fact that people often have objections to this sort of behaviour on the basis of privacy.

At this point I must say that this is nowhere near the level that slstats.com reached, where there was to be quite honest active contempt for objections, and which catalogued considerably more significant data. I don’t believe that ESC have contempt in this instance, please do not misunderstand; I do think it could have been handled better.

It is traditional at this point for some thoughtless hick to pop up and sneer “it’s public data, you put it out there, they don’t have any obligation to tell you what they’re doing, they’re a private company, get over it, you can’t stop it, IT’S ONLY A GAME!” Whilst I am not in the habit of replying to people that I have just made up, even if they are accurate conglomerations of responses I have seen elsewhere, I must make a few points.

The issue of what is “public” data and what is acceptable to happen to it is considerably more complex than a binary “this is private, don’t use it at all” / “this is public, do what you want” one, as is becoming increasingly clear in the Other World with matters such as Closed-Circuit Television Cameras. My appearance, for instance, is clearly public in that anyone may look at me and I don’t mind. Somebody who looks at me consistently for a long period of time, I will find suspicious. The repeated access of “public” information becomes surveillance. The mass access of “public” information can be used for profiling and in concert with other data to produce analyses of behaviour patterns, and not for the benefit of the individuals concerned. And any of this information can be damaging to the individual when it is presented out of context, which, with any mass data gathering escapade, it certainly will be.

The Hound of the BaskervillesIt is rational to be concerned about this when it occurs. In fact, I might say that being concerned about it by default is in fact more rational than assuming that it must be okay unless otherwise proven. The “technophobes” here are in fact those who intuitively understand the issues. Information, once gathered, is almost impossible to take back; removing oneself from databases is incredibly difficult unless they are very small ones. Endless legislation goes back and forward on these points in the Other World.

I do not wish to go off on too much of a tangent here, and I am not saying that the ESC are trying to gather data to feed to the New World Order so that they may come and enslave us from helicopters black save for corporate logos. But the mass gathering of information in any way is potentially significant, and if people concerned about that do not feel that their concerns are being addressed they will take action, no matter how much bumpkins say there is no choice and people just need to get over it. A very clear statement about exactly what is gathered, what is stored and what it is used for needs to be put forward, with some advance warning, or else there will be mistrust, resulting in, say, the system being banned from several dozen sims at once.

Merely gathering data regarding items for sale may not in itself seem threatening, given that items are generally put out for sale to the general public. There are though I’m sure people who would actually rather they were not publicly listed, who don’t advertise in the traditional way. Perhaps they want to sell to a specific person, or to a select crowd. Perhaps they don’t want the details to go into a database to be aggregated and used to produce market strategy presentations. Perhaps the idea of being entered against their will into somebody’s catalogue with whom they may disagree makes them feel icky. Perhaps they are insane. Who knows? Does it matter? This enterprise doesn’t bother me terribly and I am not going to be banning any bots for the foreseeable future, but if others wish to I cannot say that their wishes should be ignored. The choice and appropriate information needs to be presented from before Day One.

Other commentary

~ Herein, one may find a few notes dashed off in a hasty hand whilst standing in a damp Caledon drizzle, repeatedly poking a riveted cube. ~

In case any reader had not yet heard, Caledon approaches war with sundry treacherous sausage-eaters:

Trouble is brewing...

I have been working on a small flying vehicle, which uses Jillian Callahan’s “Callahan Combat Control” system. Amazingly enough, it was possible to hold fair-sized “dogfights” involving half a dozen people without any part of Caledon falling into the sea, which I was expecting. Said Runabout (a fast and maneuverable little thing using the patented Levitation Coil Engine, though somewhat vulnerable) will be available shortly in a finalish version, and all proceeds from it will be directed towards Relay For Life, at while it is still (ho ho) running.

Vulnerable Coil-Engine Flyer Vulnerable Coil-Engine Flyer (again)

I plan to have a few other Purely Defensive Vehicles becoming available as well, as soon as I organise my time correctly and stop being quite so scatterbrained, which could be a little while coming.

Off on a bombing run Through the porthole

I confess to having spent most of the latest Sunday investigating and construction engines relating to the I Ching, the final versions of which I am rather proud, though not being the most spiritually competent person in the universe I have at some point doubtless made some appalling error which will require hasty correction. I shall post more about this at some future point when I am not quite so ridiculously distracted by Things.

Oh yes. The Twitterbox. Ahem, yes, I am myself currently using version Zero Point Four, which actually has some quite handy extra features, but I haven’t put that out either. In futile defence of my organisational skills, I did post the Control Script for 0.3 eventually, and also edited the page generally somewhat to make a few things clearer.

Of little interest to those not inclined to develop Twittery Things, but proposals have emerged for those creating Clients (such as the Twitterbox) to be able to identify their Device to the Twitterverse. Apparently the latest proposals can be found here, and involve setting values for the following headers:

X-Twitter-Client
X-Twitter-Client-URL
X-Twitter-Client-Version

I have modified my own control script for Twitterbox 0.3 to include these - fear not, no action is required on the part of any users.
Thank you for whatever attention you have seen fit to pay to this entry.

I mentioned in my last Twitter-related post of inordinate length that it might be possible to set a Folder Action on the Apple Platform which would automatically upload full-sized snapshots to Flickr, although dealing with Applescript was like having porcupines in one’s socks. The porcupines have turned out not to be quite as troublesome as I first thought, and I have managed to squash together two existing Applescripts in order to make this possible. Do note that this is of no use to any reader whose Own Engine is not compatible with the “OS X” System, and I have no inclination, or indeed idea of how, to make such a thing work on other Systems.

Here is the code for the Folder Action:

The exact details of how to set a folder action on a folder are a little beyond the explanatory power of this Journal, but I would advise anyone not familiar with the procedure to inspect the Apple Company’s own pages on the matter.

Firstly, create a folder to which you will be saving your pictures - I have one on my Desktop called “Send To Flickr”, but it could really be anywhere. Save the script above somewhere, edit it to include your own Email Address and your own personal Email Address For Sending Things To Flickr With (see here if not aware of this), then assign it as a Folder Action. The script itself includes detailed directions as to where you might stick your Email Addresses.

Once this has been done and one enters Second Life, the first snapshot that is saved to disc will have to be saved specifically to the folder which you created. You should, really, be able to remember its location. After that, any snapshot you take and save there - or in fact any that you move to that folder by hand, as it were - will be converted to the JPEG format, and then sent to Flickr. A simple “CTRL-” will be sufficient to publicly record your immediate surroundings, as long, of course, as you are a user of the Apple Company’s Mail.app device. And with Twitterbox 0.3 you will be able to swiftly send this picture to the world, or at least the Twitterworld, a dark and drunken hive of scum and villainy if you ask me.

As an addition, I have designed an icon appropriate for a Flickr-uploading folder which you are very welcome to use, until such time as Lawyers force me to remove it, which I hope they will not. “Flickr” is a trademark of somebody or something, and no infringement is meant blah-de-blah.

Flickr upload folder icon

Next, we shall examine methods of forcing Second Life to make one tea and toast. Or perhaps some other subject will arise.

I had decided that the next iteration of the Twitterbox (note that the official spelling has now been set as the previous, rather than “TwitterBox”, for reasons of idleness quite honestly) - which will be 0.3 - should incorporate some form of support for images. As is my wont, I am mostly interested in an client for Twitter in the respect that it can be individual to, and send data regarding one’s activities in, Second Life itself - otherwise, why not simply use one of the other excellent methods of communicating with it?

I find the Twitterbox very convenient for taking notes of travels and the locations of things, somewhat in the same way as my existing Slurlblogger, but more immediate and clearly more fashionable; the automatic “tinyslurl” function in version 0.2 has the intention of making this even easier. (I find the tinyurl function provided by Twitter a little unreliable and unpredictable, and would rather do it all myself.) Clearly what readers really desire from a travelogue is photography, though. Twitter is not capable of delivering actual pictures, but is perfectly capable of providing links to pictures stored outside of it, on Aethernet sites such as Flickr and Snapzilla.

It is at this point that one starts to butt against the limitations of (L)SL. It is currently impossible to have a script take a picture. The only way to extract images from the Grid is for one to do it manually oneself with the “snapshot” function; this can then be saved to one’s own Machine (quickest, but not terribly useful) or sent elsewhere as a rather decorated Email, or Postcard. As many will be aware, it is possible to send images directly via Email to Flickr, but Flickr considers the Postcards sent to be too confusing to manage and refuses to accept them. Snapzilla is specialised for the receipt of Postcards (and will even cross-post them to Flickr if properly instructed) but unfortunately I am having… issues with Snapzilla with which I will not bore you but which are currently preventing me from taking advantage of its existence. In either case, sending Postcards still takes a little time, and is not nearly as convenient as typing in a line of text to twitter.

~*~

Ironically the only way that automated picture-taking-and-uploading may be implemented at the present time that I know of is to modify one’s own client or use an Automaton, an early example of which was Destroy Television. From that piece of November 2006 we see the following:

Jerry Paffendorf, the Sheep’s resident futurist, is hot on the idea of Destroy TV as it relates to lifelogging. He imagines residents of virtual worlds traveling around with a similar service attached to them, Flickring every moment of their virtual lives.

A noble imagining, Mr Paffendorf, and one which corresponds somewhat to my own desires here, though I have a feeling that Flickring every moment of their lives might not be universally popular with residents. However, I podo not personally have the time or quite frankly ability to modify clients to do this, and would much prefer if they were included for all to use within LSL. A thought has occurred just the moment that it might be possible for me to write some sort of Applescript which would react to the process of Second Life taking and saving pictures to one’s (Apple) Machine - in other words, it throws a huge bitmap onto one’s desktop - by converting the picture and sending it off to Flickr, so that just one keypress would result in an uploading… but I heartily despise Applescript and the experience for me would be rather like having a porcupine take refuge in my sock. I shall take a look to see whether it works out to be a Simple Task, but I warn you that I will not be suffering quills under the toenails for long.

~*~

I seem to have digressed somewhat from discussion of the Twitterbox here, as usual, and should return to my original point for this post before I wander completely off the face of the Grid. Sending picture links via Twitter, yes, that was it, pay attention Ordinal.

So. Last night I was thinking: how could one’s Twitterbox actually find the URL of an appropriate picture to display? Well, I could have a system which received Postcards, sent them to Flickr, and then made a Twitter entry about them, but (a) I do not have the time (b) I do not have the energy (c) other people have done things like that already, for instance Kisa Naumova, which look far better than any poor effort I might be able to knock up and (d) it would result in the Twitterbox code ending up hideously bloated and unreadable, which I submit is not really the point of it. I wish to keep the thing relatively lightweight and able to be read easily by Scripters of PHP and LSL alike. Please do not tell me, readers of the Scripting persuasion, that you really love to read page after page of such stuff. Even if you do, honestly, love to read page after page of such stuff, please avoid mentioning it, as I will not cater to your peculiar fancies.

I decided instead to toy with the idea of providing a keyword, as with the one for tinyslurls (”SLURL”). This keyword, say “FLICKR”, if included would result in Twitterbox Control looking back on the user’s recent Flickr pictures - as taken from the RSS Feed for that person’s account - and turning the link for the latest one into a tinyurl. In short, it posts a tinyurl to your most recent Flickr picture. I do not even bother to properly parse the RSS feed to be honest, just grab the first available thing and assume it is right.

To properly use this function one must have previously sent a picture to Flickr, and thus it is a two-or-more-stage process: extract a picture somehow, get it into Flickr somehow, then sent a tweet. This does in fact work as it is, but it is not particularly convenient compared to, say, a BlogHUD.

In my disheartenment this morning, though, a thought struck me: why should this be restricted to pictures? Almost everything has an RSS feed these days, and they (should) all use the same format. Why not simply have a function which can be given the appropriate RSS feed, and will extract the latest item on it to post a link to? It could be something on Vimeo, or Odeo, or even another Twitter account. It need not necessarily even be yours. The point of this is a little limited perhaps but the possibility of possibilities intrigues me.

At this moment I am considering a notecard to be placed within the device and edited by the user, which would let keywords be defined for inclusion, so a line reading

FLICKR http://api.flickr.com/services/feeds/photos_public.gne?id=25972087@N00&format=rss_200

would mean that any mention of the word FLICKR would be replaced by a tinyurl to the latest Flickr entry defined by the feed at that particular address. (It is mine, in case you were wondering.) One could have several different services. Perhaps with both FLICKR and SLURL being used in the same post, the SLURL could incorporate a thumbnail from the latest Flickr post. See - I have managed to turn the fact that it does not actually do what I wanted it to into a feature! The ghastly vision of a future in sales flashes briefly before my eyes, leaving me sweaty and shaken.

Please do not take the above as being necessarily indicative of the contents of Twitterbox 0.3, but there will be at least some vague and incompetent attempt to implement them.

~*~

Post Scriptum: I am currently using the “Google Documents” system to compose this and finding it surprisingly convenient.


Twitterbox 0.2 post animation on Vimeo

The latest version of the TwitterBox, 0.2, has just this minute been made available. There are two main changes here:

  1. The TwitterBox now has more decorative and animated effects when twittering - see the video above;
  2. More practically, if one includes the word SLURL (as written, all capitals) in a tweet, it will be replaced with the TinyURL to a SLurl for one’s present location.

As usual, full details, including links to the SLX and SLB pages concerned, can be found on the main Twitter page, and of course it is all free. I shall be posting the code at my earliest convenience.

Oh, and as an addendum - I have previously complained that Vimeo, my preferred Video Hosting Place, restricted uploads to a mere Thirty Megabytes per Week. They have recently changed their policies to permit Two Hundred and Fifty Megabytes per Week, and at no cost! I would thus heartily recommend them for all Machiniminamists without reservation; the resolution is the highest (400×300 rather than the usual 320×240), they allow direct access to one’s source files if one wishes, and their interface is simply a joy to use.

The TwitterBox is now present for your delectation on SLExchange and SLBoutique (the latter was giving me gyp last night, but seems to be behaving itself properly today).

As always, the latest versions of everything are available from my main TwitterBox page.

I have also now posted the source code for my PHP Intermediary Server Thing:

twitter-control-0.1.phps

This will not I expect be of interest to the casual Twitterer, but if you were wondering precisely what it was that the Thing did, well, do go ahead and read,and it may enlighten you to at least some small degree. There are a number of comments in the code, but, in short, it reads in the contents of the POST that is sent by the TwitterBox to it, which should be of the form

user email
password
action
status

then evaluates the “action” parameter. There is a generic function to send a request to Twitter using curl, which returns the JSON data that it receives parsed into an array. (I wish more online services would agree to return data in the JSON format.)

Notes On The Process Of Obtaining The Owner’s Proper Twitter Identity

The script makes it easier for users by only requiring them to enter their email address, which Twitter requires for the login procedure. Knowing the Screen Name of the owner is very handy for the TwitterBox, though, and in future I hope to use the ID number as well for nefarious and disgraceful purposes.

The TwitterBox gets round this by exploiting the two following facts:

  1. Upon an update, Twitter sends back information regarding the last post made by the user, including username and user ID number;
  2. Twitter will not post an empty update, but will still send information back.

Therefore, when it receives a “get id” action, the control script tries to make a blank update, which does nothing except returns information about the last post made. The script then takes the user’s screen name and ID number and sends them back to the TwitterBox, which remembers them. Thinking about it now, I suspect that if the person has actually not made any tweets at all, this may not work. Hmm.

Notes On The Process Of Updating (or “Twittering”)

As mentioned above, updating with either a blank or real entry returns information on the last post, including the time that it was created. The control script checks this - if it is before the time that it sent the request, it assumes that there was a failure to post and says so. Otherwise it says “OK”.

Notes On The Process Of Checking For Tweets

When checking for recent updates, the script pulls together all of the tweets that it receives into the format:

screen_name
text
relative_created_at (this is the “about 4 hours ago” part)
created_at (converted into UNIX timestamp format)

up to a limit of 1500 characters, which is about all that LSL will accept as the body. (The http_request event will allegedly accept 2049 bytes, but the header seems to take up a lot of this.) Note that it will not include a partial tweet if the length goes over the limit. It then sends the compiled tweets back to the TwitterBox. Actually, even restricting the number of tweets sent to 1500 characters, one still does get a satisfactory number of tweets.

If you read the LSL script for the TwitterBox itself, and you understand LSL of course, you will see that it is the box itself which actually decides which tweets to announce, if any, filtering them on the criteria “must not be posted by the owner’s screen name” and “must be after the last tweet that I announced”. The PHP script does not store any screen names or requests or any such thing, and it would have to make two requests to Twitter to be able to filter on screen name, which would be an extravagance. The TwitterBox itself is quite capable of doing this.

I actually find the way that the TwitterBox operates when displaying updates more convenient than using an External Instant Messaging Client, as the latter won’t tell one what nonsense one’s twittering friends have been blithering whilst one has been away - whereas upon entering SL now, I am immediately (or at least quickly) brought up to speed with the latest trivialities. Hah! What say you to that, Corporate IM Giants? Stop blubbering, Yahoo, it really is unseemly, stiff upper lip chaps.

Things For The Future

The next version of the TwitterBox will hopefully possess a few new features:

  • option to automatically post a SLurl for the user’s location after every tweet (in tinyurl format, of course, SLurls can take up the whole of the tweet by themselves);
  • automatic notification of other TwitterBox users in the vicinity, and the option to add them to one’s friend list (this one might cause a little difficulty in practice, though I have a few ideas, and is probably going to be entirely useless anyway, so is the least likely to happen);
  • an easier method of entering the username and password and generally configuring the TwitterBox;
  • changing the sound and adding a more visual alert;
  • the option of automatic updates on certain events (e.g. an automatic “has logged in” tweet on entering SL);
  • anything else that isn’t too difficult.

Do bear in mind that all of these things are “coming very soon/in the next update” in the Linden Lab sense i.e. may or may not appear at all.

Right. After a frustrating evening of trying to deal with all sorts of issues relating to Second Life, mine own Hosts and Twitter itself, it seems that the TwitterBox version 0.1 is now ready for release, and I have placed an open copy in my freebie box - available in the usual place.

I have put up a permanent Twitter-related page from which you should always be able to get the latest version and/or news. It also contains a link to the TwitterBox Basic, an LSL-only client that can only post, not receive tweets.

I may write further on the matter but for now I must retire.

Update: Now available on SLExchange.

Update: and SLBoutique too.

Updated: versions of the TwitterBox are now available for public consumption - see the main TwitterBox page, or subsequent journal entries.

I mentioned in my last entry the subject of using HTTP Basic Authentication in LSL. (For those of you not familiar, this is a simple and not very secure method of restricting access to a web page via a username and password.)

From further investigation I have come to the conclusion that “using Basic Authentication in LSL” would be a very short article, because the fact is that one does not seem to be able to do it at all. It is quite simple to send the username/password in an external request, all one has to do is send the following header as part of it:

Authorization: Basic user_pass_base64

where user_pass_base64 is the base64 encoding of “username:password”. However, the LSL function llHTTPRequest does not appear to allow one to add new headers, and prefers to do them all itself; Authorization (dratted Colonial spelling) is not one that it provides a hook to.

Why was it that I was interested in this? Well, I have had some recent experience of an Aethernet Service known as Twitter, a very simple system for distributing short messages about what you are doing at the moment (or about anything, really) and also, of course, for reading other people’s updates. Think of it as the most minimal sort of “blogging” system imaginable. Updates can be made and read not only on the Web, but also via or sent to one’s Portable Telephone (for free I might add) or on out-of-SL Instant Message systems.

As well as simply the challenge of implementing this inside Second Life, I am interested by the potential that exists for this to be used as a system of automatic communication. Say, for example, one has a security device which instead of informing you via IM or email when it has expelled an intruder. Twitter will keep an archive of all of these notifications, and if you wish one might subscribe to it, as could any interested party; one could monitor it on the Aethernet or via Telephone or through any other mechanisms developed in the future.

(This sort of thing is often termed a “mashup”, a word which makes me think of some sort of brewing procedure, but I prefer the old-fashioned term “laziness”. It is far easier to have other people do the hard work of setting up a system, providing phone access and so on, than it is to do everything oneself - and being lazy in this case also benefits others who might wish to do similar things to you, as long as you make your methods known. Socially-beneficial idleness, well, things do not get much better than that, surely.)

Anyway: Twitter requires that one authenticate any requests to it via Basic Auth, and I was unable to do that in plain LSL, so I simply created an intermediary - a PHP script which could receive username, password and command from somewhere else, and send it on to Twitter, returning appropriate data formatted for use in SL. This has certain privacy implications, but at the moment anyone wishing to use this will have to trust that I am not saving their email address and password. I can guarantee that it only stores the information for a tiny fraction of a second, but if you do not trust the security of my site, well, I suppose you could host the script yourself, or just not use it.

At the present time, Twitterbox 0.1 posts and receives new friend post notifications adequately. Saying an entry on channel 282 (”too-whit-too-whoo”, a rather pathetic construction but sort of memorable) sends a message, and it checks every minute for updates. I shall release the full script and PHP intermediary when I have put in some of the other functions that I am interested in, for example, a system whereby anyone coming nearby within SL wearing the Twitterbox HUD announces their user ID to your Twitterbox, giving you the option to add them as a friend. Perhaps something to automatically send SLurls to Twitter. Or similar.

For the meantime, anyone wishing to read my pointless twitterings can add ordinal to their own list. If anyone would like to help me test the above-mentioned social functions I would be obliged if they would let me know.

hare, dormouse, hatter and teapot
Above: Lindens move the asset database to a new server

Yesterday it was certainly the case that sim crossings and the simple and time-honoured practice of “moving about” were causing much consternation. I spent some time trying to fix multiple occurrences of trams in Caledon, so as not to overly offend a distinguished visitor.

‘Once upon a time there were three little sisters,’ the Dormouse began in a great hurry; ‘and their names were Elsie, Lacie, and Tillie; and they lived at the bottom of a well–’

‘What did they live on?’ said Alice, who always took a great interest in questions of eating and drinking.

‘They lived on treacle,’ said the Dormouse, after thinking a minute or two.

‘They couldn’t have done that, you know,’ Alice gently remarked; ‘they’d have been ill.’

‘So they were,’ said the Dormouse; ‘VERY ill.’

I must warn all users and purchasers of devices such as the .45 Shansi that there is an issue currently with llParticleSystem, that it does not reliably turn on and off. The muzzle flash in automatic fire for the Shansi, for instance, will not turn off when the trigger is released. I am sorry for this. It was not predictable and will certainly be fine very soon, I am sure. For that matter, even simple particle-turning-on scripts do not appear to work properly, though I am told that the First Look client is not so vulnerable.

Alice did not quite know what to say to this: so she helped herself to some tea and bread-and-butter, and then turned to the Dormouse, and repeated her question. ‘Why did they live at the bottom of a well?’

The Dormouse again took a minute or two to think about it, and then said, ‘It was a treacle-well.’

I dare say that, given that my last attempt resulted in my actually being kicked out of the world, I will not be conducting lengthy experiments, but patience, as always, will no doubt serve one well.

‘At any rate I’ll never go THERE again!’ said Alice as she picked her way through the wood. ‘It’s the stupidest tea-party I ever was at in all my life!’

“How to use HTTP Basic Authentication via LSL” will have to wait, I am afraid.

I confess to being a little tired, thus I will merely provide you with two small photographic offerings this evening.

Ordinal Laboratories - Alua

I usually have some mainland property at any particular point; I believe I mentioned my piece of land in the Alua region previously, and the above is its current appearance.

Alua is a pleasant, contoured area where I have a riverside plot, and, by God, if that is not an opportunity to dispose of hazardous waste I’m no engineer. Visitors are advised to leave the area of the outlet pipe pointing towards the water at some speed if they hear the warning whistle.

I shall be adding more and more here I expect; I am building in a style which is not, technically, low-prim, more low-prim-density I suppose, where each component (wall, doorway, outhouse) uses fewer of the basic shapes beloved of us all than it might, in order that I may go on to add more and different elements, and end up with some enormous rambling structure that makes no sense whatsoever - or appears to make no sense, I might add, there is of course hidden purpose here. How could one ever imagine otherwise? For shame!

~*~

I popped briefly to Port Caledon after a report that a tram was misbehaving, ready to administer discipline (trams, being what they are, do not respond to belt, cane or paddle, and hydraulics are often necessary) and found not only an absence of misbehaviour (resulting in a pat on the boiler and an encouraging word for the tram concerned) but also…

Missing Caledon

…an absence of Caledon I. Above you may see that I stand on the edge of Port Caledon, wondering exactly where the rest of the roadway has gone. I found no real answer to that question, but given that I have heard no-one else complain about Caledon I’s absence, I assume that it is a transitory thing.

One can become a little blasé regarding the appearance and disappearance of arbitrary land masses on the Grid. “Oh, several thousand tons of earth, water and plywood appear to be missing… ho hum.” Oh, to be rid of the jaundiced, jaded eye of the prematurely-aged Veteran! (An eye both jaundiced and jaded does admittedly have a pleasant greenish-yellow tinge.) If only it were possible to see the world once more through the marvelling eyes of a freshly-minted Ruth.

Beginning a piece of writing by apologising for not having written previously is most appallingly gauche, and you will not, dear reader, find me doing such a thing. I would like instead to add a few observations regarding the latest Scripting Abilities sent our way by the beloved Laboratory, in particular those dealing with Parcels.

dangerous anarchist tramIt has always been a source of much irritation to me when constructing Automatic Vehicles that they were unable to check before entering a particular area whether they were likely to vanish into the Mists of the Asset Server, roaming around and mournfully ringing their little bells until finding their way back into my Lost And Found compartment, to join their fellows. In fact, so many trams have entered my Lost And Found that they have actually created their own system of government, which pretends to be a parliamentary democracy but is in fact a poorly-disguised and oppressive oligarchy that keeps plywood cubes as a de facto slave class. I really must go in there at some point and unlink a few of the most prominent, pour encourager les autres.

Nowadays, however, one is able to head off any attempts at self-organisation by the contents of one’s inventory by careful use of the functions llGetParcelMaxPrims and llGetParcelPrimCount. By checking the path ahead at regular intervals to see whether the entrance of the vehicle into a parcel ahead will push said parcel’s prim count over its allotted limit, one can see when a course would lead to disappearance, and make alternative arrangements. The precise nature of the arrangements are of course a slight problem, but I would think that such things as moving ahead using “WarpPos” or perhaps returning home would work. A proper automaton would look for an alternative route, but public transport is meant to be predictable - one cannot have trams deciding that they prefer taking shortcuts, or would rather take a turn around the lake to feed the ducks, leaving potential passengers abandoned, confused and cross. I have not actually yet implemented this but plan to do so when I am able.

Whilst on the subject, it also means that the “re-rezzers” (which recreate trams and balloons which meet a sticky end) can now check that the parcel that they are on is actually capable of supporting the vehicle to be rezzed at all. Currently they cannot, as I have previously mentioned, and must attempt to do so and then check whether they have been successful, which is wasteful and annoying.

~*~

One function with which I have been actively playing is llGetParcelDetails, which enables one at last to actually see what parcel one is on. It is not of course perfect. The owner and group functions return a key rather than a name, and as others of the scripting persuasion will know it is a pain, and a slow pain, to get the names of agents from keys - and, I believe, impossible to get the names of groups from their keys, though doubtless some young thing will come along and show me to be an ignoramus on that score.

In most of Caledon, the parcels are deeded to groups, and as I test most of these gadgets in Caledon I was mostly unable to get any owner names at all. Some of the most recent areas such as Caledon Victoria City use the “covenant” system which does mean that the tenant is listed as the owner - all well and good but still a pain.

Small version of Victoria City map That aside, I made myself a device which can be used to create a map of the parcels in a particular sim, something which is not at the moment accessible from the world map, which, while much prettier than anything I can do, just shows construction and terrain rather than boundaries. If you would care to visit the following:

Second Life Sim Parcel Maps

you will perhaps see what I mean, though I do warn those of a delicate disposition that the colours are not perhaps the most aesthetic.

At this point you may wish to skip to the end of this piece… there are two sides to this, as usual: the sim mapping device within SL, and the sim mapping server upon my Aethernet Box. The former divides the map up into four metre chunks and retrieves the details from the middle of each spot in sequence - so, it starts at (2,2,0), then (4,2,0) and so on, until it gets to (254,254,0).

It goes by rows - the data for a row are transmitted as a series of records of where a parcel starts and what its name and description are. So, if Parcel A starts at the bottom left corner (2,2,0) and continue on to (62,2,0), with Parcel B starting at (66,2,0) and continuing for the rest of that Y-position, it will send to the map server the information

row,0
0,Parcel A
16,Parcel B

The numbers here refer to the particular 4m square rather than the exact X or Y position of its centre. If a row is actually the same as the last one, the scanner sends nothing at all, which cuts down on the amount of data to be sent.

This information is stored in a temporary file once received, and once the entire sim has been scanned it puts it all together to create a (very messy and inefficient) page displaying the map. There is obviously more to the technical side than this but I am starting to bore even myself and will thus cut this a little short; suffice to say that any half-competent apprentice in the field of PHP could do such a thing, it is really just opening and writing to files and creating arrays and all that malarkey.

One thing that does interest me is that the system stores every map rather than overwriting the existing one for a sim each time, which would enable a historically- or research-minded person to see how the occupancy and usage of a sim has changed over time. (There are no archive pages or such at the moment, I only made it yesterday, but it is part of the plan to put them in.) I was considering setting up the scanner to, say, do a scan of Caledon every week - the scanner itself could be made to move about between sims, it does have to be in the same sim as that which it is scanning.

~*~

a pickpocketOriginators and propagators of Urban Myths upon the Grid will be most disappointed to hear that there is still no function which enables the creation of “land scanners” which allow automatic purchasing of land set for sale at L$1, since there is still no way to tell what the purchase price is or if the thing is for sale at all, let alone buy it automatically.

The practice of Land Swooping is as far as I can see a purely human-powered endeavour, with some odious weasel sitting there clicking “Search” again and again, like an urchin waiting on the street, watching for passers-by who unwisely reveal their Purses, Wallets or Mobile Telegraphic Equipment, whereupon the little beast will swoop in and relieve them of their valuables. In the Other World of course the thief does not usually hang around to taunt the victim and tell them they deserved it, since such practices are illegal there and invite Attention from the Constabulary or even Immediate Retribution by the Injured Party.

A tip of the hat to the respected journalist Mr Hamlet Au, who has had considerably more success than I in eliciting a response from Channel Four Radio, whom I believe I mentioned earlier. I must say that Mr Au’s full piece is well worth reading, highlighting as it does the regrettable tendency of our men and women of business to slip into a most peculiar automatic argot when confronted with a question for which they appear to lack understanding, answers or interest. Below, however, you may find an extract:

“In the UK Guardian story,” I asked her (Natalie Schwarz), “you’re quoted as saying [Channel 4 is] ‘the first radio station to launch in Second Life’… Many members of the SL community have objected to your assertion of being ‘first’, because it discounts this pre-existing culture of SL-based radio as if it wasn’t even there. What would you say to them?”

Schwarz’s reply: “We do not discount the pre-existing culture of SL-based radio and respect it. What marks us out as different, is that we’re combining real life broadcasting with virtual world news and culture. Second Life is in a rapid period of change, one that is starting to see more traditional media channels combining with virtual worlds. This is a very exciting time, and we want to work with you and help it grow and flourish.”

fourth-estate.jpg I am left very little the wiser as to quite how the content of a station - even were it to be the case that this was the first radio station in Second Life referring to both the Other Place and the Grid, which I would doubt - has any connection with it being “the first to launch” in general. I suppose that one could narrow one’s definitions of the terms “radio station” and “launch” to such a degree that one is indeed the first radio station to launch, but in that case I am in fact the first resident of Second Life to build anything, if by “resident” you mean “diminutive ginger inventress” and “build” you mean “construct a giant lighthouse that actually looks a bit like a teapot”.

I must add at this point, as I am experiencing slight pangs of guilt for my sarcasm, that I am not at all offended by and am in fact quite keen on the projects behind these latest two “firsts” (the above, and also our first Tabloid, both referred to in Mr Au’s piece). I am always very encouraged to see new projects emerging to inform and entertain the good folk of the Grid, and at the moment I am not of the opinion that either tabloid or station will bring about the demise of existing organs. To be quite honest, the fact that the hectoring of residents is often put down to “jealousy” or “fear of the new” irks me not inconsiderably - no-one is more excited by novel developments than I, as we boldly march forth towards the Twentieth Century.

Said counter-criticism misses the point entirely, which is that nobody wishes to have their own achievements and the achievements of their peers publicly dismissed, and doing so then being surprised at the reaction reveals a lack of both research and understanding, the latter of not just Second Life but also humankind. Such a lack, I fear, does not reflect well upon anyone. I would be delighted to be proved wrong on this point and do of course keep a perpetually open mind.

~*~

Incidentally, there has been extensive kerfuffle concerning a new Automaton colloquially known as “CopyBot”, which demonstrates the capability of certain new systems to capture every single item that can be seen. The Herald has a piece on it with linked cinema of an early, crude version, but I was able to instruct it to copy me last night during a meeting of many Grid luminaries, with results both amusing and personally disturbing.

Two Ordinals 1 Two Ordinals 2

The copy was exact down to the last rivet, though the automaton itself is a mere clown, simply mirroring everything that one does, including one’s animations. It would disturb me considerably more to have an actual person mimicking my appearance but behaving differently. I do not expect any creation to allow the mimicking of one’s actual personality for some time to come, but when one spends a lot of time on one’s appearance, as residents of the Grid usually do, and one is intimately familiar with it as the representation of one’s self in a particular world, seeing it duplicated has a visceral effect, a sapping of a portion of one’s individuality. We are not all Taoists.

The potential legal, economic and social issues of being able to easily duplicate anything exactly are of course considerable and something upon which I may write at a future point. On one hand I am thrilled at Scientific Advance, on the other I am extremely concerned that folk receive their Just Reward for their efforts, even if it be merely recognition (something that I am mostly concerned with) and do not wish to see a world whereby there is no real exchange of effort.

I have no respect for the “Market” and despise the Invisible and Bloody Hand, but at heart Currency is a system that allows for resource distribution, the resource here being creativity and skill and effort. Furthermore, one’s land requires the input of Capital for it to survive. Already I see that some scoundrel is distributing copies of this Bot for a sum, and others are distributing its program for free. It is uncertain whether the simple remedy of Instant Messaging the Bot with the phrase “!quit” works with these versions, or whether, as with the one that I encountered, it requires deliberate confirmation first. Even if so it will not be long before such barriers are removed.

Perhaps the best solution that I have seen (excuse me for not being able to find the original) was referring to Mr FlipperPA Peregrine, saying that since everyone is his friend, nobody wants to copy his work, because nobody copies their friends’ work. Reader, will you be my friend?

Caledon 85,46,26 - Version 0.4 of the Slurlblogger is now available! As previously demonstrated by mice with hats, this version will now post directly to a blog as well as to email, and is notecard-configurable.

Caledon 87,47,26 - I have tested it with Blogger and Wordpress (on my own server), however, if anyone could confirm the stuff in the instruction card about other hosts and systems, that would be good. Typepad testing would be useful too. I’m sure I will be tweaking.

Caledon 87,47,26 - The following logo was not actually posted via the Slurlblogger, but after submitting this I will be adding it by hand….

The Slurlblogger Logo

(A further addendum: this is, please note, very much an experimental version, and may not work perfectly with everything. Please do not shout at me and knock off my glasses if it does not work with your system. There are a few issues, such as post titles perhaps not working outside of Wordpress, that I am looking at.)

Purchase from SLBoutique
Purchase from SLExchange