Wednesday, February 14, 2007



I moved my blog AGAIN?

You're going to have to update all your bookmarks and RSS readers?

That's insane!

Tuesday, February 13, 2007

Challenge #3 Response

Like many of the other people who have already responded, I've been burnt out on some particular part of SL at once time or another. And I know for certain that I have felt burnt out while in SL. But I'm not sure if I was burnt out on SL, or burnt out about something else while I happened to be in SL.

You see, I'm a creature of change, and I have to move from project to project quickly or I become bored and apathetic—not just with that one project, but with other things in my life, too. So if I get burnt out on something in RL, my mood tends to carry over into SL, and vice versa. As I've come to know this about myself over the years, I have been careful to monitor my mood, identify anything that is bothering me, and make a change to fix it.

I can distinctly remember, when I was merely a wee newblet crawling my way around the Grid as I drew sustenance from the Shelter, that I had concerns that I was spending too much time in SL. Like many other new Residents, I got hooked, and wanted to spend as much time as possible exploring this marvelous new world! I knew that if I kept it up, I would burn out and get sick of SL.

When I (inevitably) started to get tired of SL, and couldn't think of anything to do, I cut back on the hours I was spending in SL, and paid more attention to the things that interested me in RL.

I have, from time to time since then, noticed myself spending too much time in SL. When that happens, I take a little bit of time off, or just cut back my hours for a while. So far, I've always come back to SL, and always found it more enjoyable and interesting than it had seemed before.

Sunday, February 11, 2007

Challenge #3: Have you ever burned out on Second Life?

The question for consideration this round:

Have you ever burned out on Second Life?

By "burn out", I mean "experience fatigue, frustration, or apathy resulting from prolonged stress, overwork, or intense activity."

Basically, have you ever just got sick and tired from too much SL? What happened? How did you deal with it?

I'll post my own response soon.

Plugging my 3PM Building Class at Swinside

This afternoon at 3PM PST, I'm giving a 1-hour lecture and demo at the Shelter in Swinside! The topic is prim attributes—you know, things like Twist and Taper and Hole Size Thickness, which let you tweak a prim's shape into a multitude of wootworthy shapes! If you haven't been able to make it to my Friday evening classes at NCI, this is your chance. (I might start teaching at Swinside regularly, but only if enough people show up to be taught, so attend today!)

Everybody should come at get some learnin' in their brains about prim attributes! I offer my knowledges to you for free!

And then you should stick around after the class, because at 4:30PM is the ├╝berfun Building Shelter contest, hosted by our favorite commodity, Coal Nelson! With the power of prim attributes unleashed, you can be sure that there will be some cool builds today!

P.S. I'm going to try to think up a Not-A-Meme challenge for folks today. Stay tuned!

Saturday, February 10, 2007

Challenge #2: What You Like Most About Second Life

Mera poses the challenge: Tell us what you like most about Second Life.

Dolmere wrote in his response to the challenge:

I still remember Mera exclaiming something like "I love this place. It's good to know that the skills I have spent my life learning are appreciated somewhere".
That reflects much of the appeal of Second Life to me: the sense of efficacy and satisfaction that I derive from it. The things that I love are things that matter in Second Life. And I love what things matter in Second Life.

Consider a game such as, say, World of Warcraft, the massively multiplayer online stupefacient that held my attention prior to joining Second Life. I could perform decently in such a game, but the things that mattered—the things around which the hierarchy of reputation was formed—were the ability to kill things quickly, and the ability to kill other things quickly. Rarely was there reverance for a great healer; appreciation, of course, because they helped the other people continue to kill things; but not reverance.

I was never very competetive by nature, nor was I destructive. I found more satisfaction in cooperation and creation. I did not care to organize a group of other players to attack the enemy's home cities and kill their citizens. I would rather (and did, on several occasions) organize a dance-raid: march into the enemy city and have a peaceful dance party with the enemy! (For some reason, the enemy did not usually appreciate my efforts.)

Second Life was different.

Many people take great pains to stress that Second Life is not a game. But for me, it always has been a game—of sorts—and one that I was good at (and more, enjoyed!). In this amazing new game, instead of killing things, people created things. Instead of smacking each other with swords, they joined hands and made the world better. The people who were most widely-known and respected were renowned for their creative ability or friendliness! What a marvelous thing to find!

Of course, the "rules" to this "game" aren't as concretely established as in Warcraft, and everybody "plays" a different way. But for me, every time I create a new sculpture or enjoy an activity with my friends, it's more satisfying and rewarding than killing monsters or running around from place to place ever was.

So, what do I like most about Second Life?

It's not the amazing and wonderful people I've met. It's not the dynamic environment. It's not even the building.

It's the attitude and spirit.

Create, not destroy.
Help, not harm.
Join together, not tear apart.

Everything worthwhile in Second Life is a branch on this tree.

Friday, February 09, 2007

Challenge #2: What U Lieking Most Aboot Second Lief??

Mera demands: Tell us what you like most about Second Life.

Oooh, that's a toughie. Well, after thinking it over for a while, I decided that what I like most about Second Life is...

Jacek looking rather blingy


Hoo-ha-ha! Just kidding, gentle reader! The thing that I actually like the most about Second Life is...



Jacek still looking exactly the same about of blingy


Ah-ha-ha! I kill me with my own humor! I am truly slain with laughing!

Tune in again later for less silliness!

Tuesday, February 06, 2007

Challenge: Two Newbie Locations

If I were to name two locations in Second Life to show a new Resident, what would they be?

Well, if I'm going to be giving a newbie the ultra-premium tour de luxe of Second Life, that newbie is probably a clever one, bursting with raw creative will!! I want to expose that Resident to the amazing possibilities in Second Life, and get them started on the path to supreme excellence!

First stop: Jopsy Pendragon's Particle Laboratory!

Jopsy Pendragon is amazing. He is like a deity that reaches his hand out into the cosmos and gathers up the stars and nebulae and puts them on display for us mere mortals to gaze upon in awe. And he is a kindly god, too: his Particle Laboratory includes a free, first-rate self-guided tutorial about particle systems! How neat is that?

Jopsy's place is huge, with so many different particle-related things to see. I haven't even seen half of it, and there's more being added all the time! But there's one part in particular you definitely have to check out: the Cloud Chateau!

A still image cannot hope to capture the beautiful moving designs you will find in the Chateau; you'll have to see it for yourself. It's a great place to relax and get inspired, and I love to visit it! One note: if you try to teleport there (like from the link above), you'll be placed on the ground level. The Chateau is many hundred meters in the air, but luckily there's a handy elevator bubble that will take you directly there. Enjoy!

Next stop: The Photography Studio in Grignano!

The Studio is headed by Osprey Therian, a very cool gal with a very cool hat and a very cool gallery! There is a loosely-themed photography contest just about every month, with cash prizes (yay, money!). I've even entered a few of them myself!

There is a lot to see at the Studio. Downstairs is the studio proper, with backdrops for snapshots and a collection of "old-timey" snapshots. On the second floor to the right are a collection of books and other entertaining things. But my favorite part is the gallery, where the monthly photo contests entries hang in all their snapshot glory. Second Life has some very unique and talented artists among its population, and the Photography Studio in Grignano is a fantastic place to see the works of established as well as up-and-coming Resident photographers!

Saturday, February 03, 2007

Arbitrary Prim Attributes

What a super idea! I've got the YAYZERAMA HANDS too now!!

Features like this (and other cool things, too!) could be added to the viewer client, 'specially now that it's open source, but so many features require just a little bit of help from the server to do it properly.

For example, right now there's no good way for the sim to remember "This prim has a saturation of 0.5 on all its sides" and tell that to everybody that comes by, so there isn't any way to share the desaturated goodness with anyone else! (Maybe you could store some cryptic data in the prim's name or description for other special viewers to notice, but that would be a dirty, dirty hack. Yuck!)

Sure, we could tug on the Linden programmers' shirt tails every time there's a new client-side feature we'd like the sim to store a little bit of data for. But, even if they were just twiddling their thumbs all day and waiting for something to do, there would never be enough time to add something for every feature that someone thinks up. (Plus they'd have to do a grid-wide update every 15 minutes.)

A better way would be to give each prim a little pocket where it can hold some arbitrary data to give to viewers that see it. There would be a hard limit on the size of the data (maybe 1k, or 5k), and it would be completely up to the viewer software to decide what to do with it. And of course, scripts would have to be able to read and write this data!

Ideally, objects and prims in SL should be sent as XML, kinda like this:

name="My Awesome Prim"
description="The best prim ever made."
texture_uuid="top: [uuid], bottom: [uuid]"
contents="[first_item_uuid], [second_item_uuid]"
size="8m 2m 2m"
awesomeness="23.5" />
Then the scripts could do something like this:
if( llGetAttribute( "shape" ) == "torus" )
llSetAttribute( "awesomeness", "infinity" );
Or if we had a decent scripting language, like ruby, it would be like this:
if self.shape == "torus"
self.awesomeness = "infinity"
And if you had a special viewer client that was programmed to understand the "awesomeness" attribute, the client could do something cool like write "This prim is so awesome!!" on your screen with a big squiggly arrow pointing to it.

That would be awesome.

P.S. If you're worried that this would contribute to sim load because of the increased amount of data being sent, remember that textures are the #1 cause of teen pregnancy sim lag. Plus, the sim could enforce a data size for the prim declaration, by dropping out some nonstandard attributes if it gets too big.

P.P.S. Yeah, I know this could be a big ol' security hole. What isn't? 'specially if you're using a custom viewer client provided by some homeless person down the street.

Monday, January 29, 2007

Monday, January 22, 2007

Local subversion repository

Another post? It's like a post overload!

I've set up a local subversion (svn) repository to manage the viewer source code as I make revisions, allowing me to easily save old versions, view what I've changed, and revert to the older version if something bad happens. It's not accessible over the internet (at least not yet), which means that it is of very limited usefulness to other people. But hey, I know how fun it is to read about what other people are doing that doesn't really affect me personally, so now my readers (I think I have some of those? Maybe I'm thinking of lemurs.) can enjoy the same luxury.

Here's the plan for repository layout:

  • linden — contains the most recent vanilla source code from Linden Lab.
  • jacek — contains my tinkered source code.
You might be wondering why I would maintain a directory with the untouched source code, when I can always revert any changes that I've made. My reasoning has to do with managing changes to the linden branch and merging them into my own branch as needed. When a new version of the source comes out, I can update the linden branch, see what changed, and apply those changes to my branch—without overwriting any changes I may have made to the same files.

I might also make more branches off of jacek if I ever decide to implement something that takes a really long time to code, then merge the changes back when I'm done.

UI abstraction follow-up

Not to toot my own horn in public, but one of my images for the UI Abstraction Photo Contest won first prize! I thought that was pretty neat. It was this one:

There were a metric ton of other really awesome images in the show, in a surprising variety of styles! The social phenomenon that is Torley submitted some images, and they were pretty awesome, which is natural, seeing as how Torley is to UI abstraction what Rembrandt van Rijn was to portraiture. I even use a mash-up of one of Torley's pics as my desktop wallpaper. Not to mention Torley's texture packs—they look really cool on a nice twisty torus! And there is a new pack out that I have to run out and get! And the songs, oh so many wonderful songs (especially lovin' the piano fantasies)! *gush* <3 We all love Torley! <3

(Hey, that's like 3 posts in one day. This is starting to turn into a blog or something. What the cube?)

Disabling Typing Sound Client-side

You know that really loud and annoying typing sound? The one that plays whenever anybody starts to chat? The one that used to ruin in-world live music events? The one you muted all sound effects to get rid of?

Yeah, you know the one. Well guess what: you can replace it with the sound effect of your choice, or just get rid of it entirely. You don't even have to change any code in the viewer source; we could have done this all along. (Which really rubs salt in the wound, doesn't it?)

Here's how:

  1. Enable the Client and Server debug menus with Ctrl-Alt-Shift-D.
  2. Client > Debug Settings (second entry from the bottom)
  3. Type or find "UISndTyping" in the drop-down menu box.
  4. To get rid of the typing sound: clear the text entry box at the bottom. To use a different sound file, paste its UUID into the text entry box. (You can get a sound's UUID by right clicking it in your inventory and choosing "Copy Asset UUID".)
That should save the setting to your user_settings.xml file:
    <!--Sound file for starting to type a chat message (uuid for sound asset)-->
<UISndTyping value=""/>
This only changes what you hear from your own client, which means everyone else will hear whatever they set. And best of all, you won't hear typing from other avatars, either! Now that's music to my ears!

OSS Viewer success

Minor news bulletin: I compiled the latest viewer source and successfully connected to the grid today. I'm not sure exactly why it worked this time, but there are a few major possibilities:

  1. I used the faster, but proprietary jpeg2000 decoder library.
  2. I actually followed all the instructions.
But there's no way of knowing exactly which it was... so, um... yeah.

Friday, January 19, 2007

UI Abstraction Photo Contest

You may have read about the next contest at the Photography Studio in Grignano. I've submitted two images to the contest, which you can view below!

Both entries are based on a set of snapshots I did of one scene; every snapshot in the set was of the same scene from the same angle, but with different settings. The stark difference between the images below is the product of experimenting with how the many snapshots were layered and combined. The series is entitled "Welcome".

Click each image to view a larger size.

They will be hanging on the walls of the venerable Studio with all the other entries for the exhibit, so you should check the place out!

Also, if you're thinking of submitting an entry, you'd better hurry: the deadline for submission is tomorrow evening!

Tuesday, January 16, 2007

Saturday, January 13, 2007

Status Update 01-13

I've compiled the vanilla viewer 3 times so far, twice as "release" and once as "releasefordownload". I've also connected to the Grid (Agni) several times, but each time the connection was apparently interrupted or died or was deauthorized soon after log-in.

Movement, teleportation, profile viewing, map viewing, and who knows what else were non-operational. The Friends list seemed to work, and I tried to send a couple IMs to my online friends, but they were not received. L$ balance was blank, and some menu options were disabled (specifically "Appearance" and "Upload ____"). My avatar was invisible except for a few attachments attachments, and no in-world objects were visible. The terrain was visible, however.

There were several varieties of suspicious/interesting messages which flooded the console at various times.

The first variety looked like this:

[INFO] tile 1 of 1
[INFO] - tiers-1 took 1.032843 s
[INFO] - dwt took 2.815572 s
[INFO] - tile decoded in 4.792272 s
I think it is reporting on the download and decoding of texture files from jpeg2000 format. Some time after the log-in process began, an increasing amount show up like this:
[INFO] tile 1 of 1
[ERROR] tcd_decode: incomplete bistream
[INFO] - tiers-1 took 0.117982 s
[INFO] - dwt took 0.406939 s
[INFO] - tile decoded in 0.736888 s
[ERROR] read error
If I try to move or fly, I get messages like this:
2007-01-11T23:22:44Z WARNING: sendMessage - Trying to send AgentUpdate on unknown circuit
If I try other things, I get the same message, but with "AgentUpdate" replaced with other message names, like "ViewerEffect" or "TeleportLandmarkRequest" or "AgentPause" or "LogoutRequest".

Finally, here is an example of the message log summary I get when I quit the viewer.
2007-01-13T23:04:01Z Run time: 591.330 seconds
2007-01-13T23:04:01Z Incoming:
2007-01-13T23:04:01Z Total bytes received: 78004 ( 1.06 kbits per second)
2007-01-13T23:04:01Z Total packets received: 403 ( 0.68 packets per second)
2007-01-13T23:04:01Z Average packet size: 194 bytes
2007-01-13T23:04:01Z Total reliable packets: 24 ( 5.94%)
2007-01-13T23:04:01Z Total compressed packets: 71 (17.57%)
2007-01-13T23:04:01Z Total compression savings: 8097 bytes
2007-01-13T23:04:01Z Avg comp packet savings: 112 ( 1.38 : 1)
2007-01-13T23:04:01Z Avg overall comp savings: 20 ( 1.10 : 1)
2007-01-13T23:04:01Z Outgoing:
2007-01-13T23:04:01Z Total bytes sent: 2000 ( 0.03 kbits per second)
2007-01-13T23:04:01Z Total packets sent: 437 ( 0.74 packets per second)
2007-01-13T23:04:01Z Average packet size: 5 bytes
2007-01-13T23:04:01Z Total reliable packets: 71 (16.21%)
2007-01-13T23:04:01Z Total compressed packets: 14 ( 3.20%)
2007-01-13T23:04:01Z Total compression savings: 244 bytes
2007-01-13T23:04:01Z Avg comp packet savings: 16 ( 1.22 : 1)
2007-01-13T23:04:01Z Avg overall comp savings: 0 ( 1.12 : 1)
2007-01-13T23:04:01Z SendPacket failures: 0
2007-01-13T23:04:01Z Dropped packets: 10
2007-01-13T23:04:01Z Resent packets: 34
2007-01-13T23:04:01Z Failed reliable resends: 42
2007-01-13T23:04:01Z Off-circuit rejected packets: 267
2007-01-13T23:04:01Z On-circuit invalid packets: 0
2007-01-13T23:04:01Z Decoding:
2007-01-13T23:04:01Z Message Count Time Max Avg
2007-01-13T23:04:01Z END MESSAGE LOG SUMMARY
On the plus side: except for not being able to log in or do much of anything, it works great! ...

Wednesday, January 10, 2007

Miscellaneous Feature Ideas

Just brainstorming features (large and small) that would be both possible and desirable to add to the Second Life viewer client. Things which would require server changes don't fit here, only things which can be accomplished by changing the client only. I'm also focusing only on new features for this post; I might make another post of bugs that should be fixed.

  • Menu items for builder tools (e.g. Edit Linked Parts, Ruler Modes, Color/Texture Pickers).
  • Hide/show specific UI elements. (Tateru gets the credit for thinking up this one.)
  • Arbitrary number of clothing layers on all body sections.
  • Improved avatar mesh UV maps, so clothing and skins are easier to create and align.
  • Improved avatar mesh weighting, so joints don't bend in such an ugly way.
  • Modifiable menus (rearrange and set shortcuts on the fly).
  • UI color schemes.
  • Additional image file formats (e.g. PNG).
  • Client-side script API, allowing interpreted scripts to access client functions.
Here's how I would rank them:

The three least difficult to accomplish, in increasing difficulty:
  1. Menu items for builder tools.
  2. Hide/show UI elements.
  3. Improved avatar mesh weighting.
The three most beneficial, in decreasing benefit:
  1. Client-side script API.
  2. Arbitrary clothing layers.
  3. Modifiable menus.
The three best time investments (most gain for time spent), in decreasing return on investment:
  1. Client-side script API. (The gain is simply astounding.)
  2. Menu items for builder tools. (The gain is only moderate, but the effort is minimal.)
  3. Arbitrary clothing layers. (The gain is very great.)
If you care to comment on how you would rank the listed items differently, please do so. I'm not asking for new ideas for features, though; I think there are more appropriate (and worthwhile) channels to be heard.

Monday, January 08, 2007

Post-OSS Plans

I've dived head-first into the client source code. For the moment, I'm just orienting myself, poking my head around to see what goes where, building up a mental map of how the pieces fit.

An obvious next step is to attempt a compile of the viewer as-provided, before making any changes. That way, if something doesn't work, I will know that at least it used to work, so something I did broke it.

I'm also familiarizing myself with Linden Lab's issue tracker, wiki, mailing list, etc.—all the new stuff that appeared. I'll probably see if there are any little bugs in the issue tracker that I can fix.

In the meantime, I'm noting areas of the source code that interest me, so that I can focus and specialize in them. At the moment, improving the user interface seems to be where I get my kicks. The things I noted in my exploration of XUI as being impossible without access to the source code are now, of course, possible.

Lots of new toys to play with.

Second Life Viewer Open-Sourced

This is quite simply the most important SL news ever. Don't I seem excited? Well, I am. You could say I am cautiously optimistic.

Linden Lab has put a lot of thought and planning into this move, as evidenced by the info-laden open source page and new wiki. I can only hope they know what they are doing.

Yes, part of me worries about the negative effects we will almost certainly see in the near future. This has the potential to be much worse than the CopyBot scare, and with good reason—this turns the Grid upside-down. The assumptions that had been in place are now defenestrated, and business models will have to adapt, and adapt fast. Except for scripters and sex workers, there is no SL market I can think of that will not have to fundamentally rearrange itself.

Honestly, Linden Lab should have given an announcement several days prior to the source code release, to give time for preparation. I would not be surprised if many content providers close down temporarily, until they decide what to do.

We will probably see theft and panic. Temporary economic instability. But people will adapt. New business models will emerge. And most importantly, new tools will be created to improve Second Life.

Let's have hope for the future. The next few days will be rough as vendors panic, but things will calm down. Later, probably within a week, some new tool will be released to exploit some security hole, and more people will panic. But things will calm down again.

And then we'll see some really neat stuff. The kind of stuff that restores your faith in humanity.

That's how I see it, anyway. Time will tell.