scripting
XiMP: A publish/subscribe model for media content
by azwaldo on Jan.06, 2010, under design, education, scripting, secondlife
I have discovered a new approach to making media content available to users in Second Life™ (SL). All feedback suggests that this is new. The educational use cases are obvious.
By using a website and database to index, describe and tag media files (such as podcasts or videos), we create a dataset that refers to the content. This metadata can be sent to an object in world, such as a HUD, to give users immediate access to that content. By routing the URL and media type to a local media access server* the user can engage the media wherever she is…no need to open an external browser or teleport elsewhere to use a media display.
* The local media access server is a single script that can be placed in any object; a rock, a tree, a roof, or a transparent prim.
XiMP = eXtending interactivity with Messaging and Presence
Once we have media associated with SL content such as notecards and objects—and messages delivered by blue dialog prompt or SLURLs written in chat—we find there is a variety of ways to combine these resources into content bundles…or XiMPs, as I have called them, for convenience. By subscribing to a particular type of content or to a particular author, users can be notified when content is available; in this way we are “pushing” content to users in SL.
Think RSS feeds…FeedBurner or Google Reader.
2) Website pushes data to the xHUD
3) xHUD sends request for media to local access server
4) Media access server assigns content to the local parcel media stream, and…
5) The user experiences the media remotely, individually, in the xHUD (or on a display in world)
6) Finally, in the demo, the media is displayed in the xHUD’s media display panel
The best way to understand this is to see the system in action. You are welcome to visit the demo at my parcel in Gyatso (SLURL). It only takes about five minutes; and, it is easy:
1) get HUD
2) step on green circles
Some rezidents are still “fuzzy” about what is happening, even after the demo. (Quoting a visitor, here.) Would you be interested in a personal demonstration? I would be glad to arrange to meet in world and discuss where this might lead, as well as how it works.
This project was inspired by my study of XMPP and Google Wave while preparing for an event in SL (see “Wave” titles in Recent Posts). A test system was working within the first day, and I immediately began to design the demo activity. Days later, I invited a few folks to kick the tires, and then posted an announcement in ISTE group chat. Six or seven rezidents showed up, all at once, and I noticed several problems with the design of the activity. I continue to refine that design.
Many visitors stick around to discuss the demo, and several have expressed willingness to participate further. I am now encouraging visitors to stay in touch, making contact by email (contact “azwaldo” at gmail dot com) or by following the newly created Google Wave (wave link: http://bit.ly/5iW36s , only opens for Google Wave users. Need an invite? I have some.)
As far as I know, this is the first activity designed using this approach. For a different project, Omei Turnbull helped create a way to store comments about a location (or build) as an asynchronous dialog (see GroupNotePrim). I suspect that a similar interaction would be useful in this system. (Learner is prompted to comment on some aspect of the location or build they have been sent to observe…)
Self-paced, asynchronous presentation of content is something for which virtual worlds are particularly well suited. A system like XiMP might extend our ability to support a lesson with media content.
Second Life Wave Users Meet-Up
by azwaldo on Dec.13, 2009, under design, opensource, scripting
- Who: Second Life™ developers who are also Google Wave users
- What: Developers Discussion
- Where: Free University of Berlin*
- When: 11AM SLT Saturday, Dec 19th
- Why: To discuss the integration of SL applications and XMPP
* SLurl: http://slurl.com/secondlife/New%20Berlin/95/31/32
Join programmers and content creators to discuss how wave technology (XMPP) might be integrated with SL applications.
- What would this look like?
- How could it improve the SL experience?
Friendly Fire, the GLAMest Band in the Land, will perform live right after the discussion. There will be DJs , information, and a Silent Auction for Google Wave Invites.

Event Space at newBERLIN
The main event—A Developers Discussion “Integration of Wave with SL”—will be at 11AM SLT. There will also be a demonstration of an interactive training bot at 10AM SLT. (NOT wave-enabled, but an example of an application that might benefit from XMPP integration.)
The purpose of this event is to attract SL Rezidents to an open discussion about integrating XMPP with SL applications. Some discussion is taking place at this wave (only works if you have a Google Wave account): https://wave.google.com/wave/#restored:wave:googlewave.com!w%252Be8cce8kiD
A wave has been created to plan the event, and now has the complete schedule of events. Here is the wave-URL : https://wave.google.com/wave/#restored:wave:googlewave.com!w%252BAltepd9UA
Simply Attach To Avatar
by azwaldo on Apr.14, 2009, under scripting, secondlife

What could be better than having a scripting lesson come out of the blue?
While rooting around for information to support an upcoming post, I came upon a video from 2006. In that video, an avatar is seen touching an object and that object then becomes attached to the hand after the user makes a selection in a dialog box.
Did you know that an object can be attached to an avatar without the step of taking it into Inventory? I did not. I even have a use for this in a current project!llAttachToAvatar lets you attach an object directly to an avatar. The function’s entry at the LSL Wiki even has this very action as the demo script.
What I don’t know about LSL could fill a wiki.
LSL 101, or scripting for beginners
by azwaldo on Apr.05, 2009, under education, opensim, scripting
I have begun to develop a series of scripts to introduce various effects to new users. These scripts can be placed in a default prim which becomes an interactive, instructional object. They are a series in that each script (or possibly group of scripts) will build upon what was presented in the previous script (or group of scripts).
I had worked on a similar project back in my first year as an avatar.
A major priority back then was to create an extremely low-prim object. This resulted in objects that might have the user toggling the “Running” checkbox (see image) in the script-edit panel to advance the lessons; or, any one object might have multiple scripts… or rezz other objects for demonstration. The scripting and comments needed to manage those behaviours sat right next to bits that were the meat of the lesson; and, the comments in those scripts were often instructing the user to look at one script first and then another, or toggle checkboxes to activate a script. It just became too clunky.
This new approach places scripts in separate objects. Each script can now be written with clear instructional content (read: extensive commenting), without the distraction and clutter found in the previous project.
On reflection, my own drive to develop low-prim objects in SL might have been unnecessary or extreme, restricting the design in an artificial way; but, it took OpenSim’s abundant elbow room to bring me back to a project that probably has value.
OSSL’s TextureDrawing
by azwaldo on Apr.01, 2009, under opensim, scripting
First use of OpenSim-specific functions today. Even though this occured on the same day as a significant HubBub erupted in the OpenSim community (note the date of this post), it is encouraging to find that the potential of OpenSim is already proving itself…making strides beyond the capabilities of Second Life®.
I implemented the example script for TextureDrawing in ReactionGrid’s OpenSim. This function allows the display of text on a prim’s surface. Font resolution is crisp (see image) and some styles can be applied to the text (font size, decoration and color all applied in object in background). I modified the example script to receive a string from public chat, edit into display-size chunks (lines), and draw onto prim surface.
Next, we poll a file on an external server to retrieve text submitted via website.




