Thursday, October 30, 2008

SLim first use

"SLim is the name of the Second Life chat client. It enables Second Life Residents to text or voice chat with SL Friends without having the SL viewer open. Residents using the SL viewer can use the usual viewer communication controls to text or voice chat with SLim users, and SLim users can communicate with SL viewer users.

SLim does not support group (conference) text or voice chat yet, though we hope to make this available in the near future."

Using the new SLim client:

Step 1: Head to http://secondlife.com/SLim/ Step 2: Download the two clients. Step 3: Register your avatar in a new account with Vivox. It all feels unnecessary considering the blog/forums/website are all moving to single site login.


The login screen is pretty much like Skype, which is nice.



Unfortunately, despite following the instructions, SLim doesn't work for me.



Looking through the feature list, it's a wonder why this client actually exists. Ajax life does everything this client does, only better, and no need to create a new account. SLim can't modify your friends list, nor can it apparently sort or, well, do anything to it (you can't even search for names, let alone IM ones manually, despite documentation in the KB article otherwise).

The benefit is voice integration, but if I want to use voice without SL I'll use Skype (far superior sound quality, and cuts out less).

There is, however, potential. If they can lose the Vivox registration, add a few standard features, and get group chat working before hitting release, I can see myself using this program fairly regularly. Lately, I've been logging in just to IM, and it feels wasteful as well as rude (particularly when I get teleports or notices for events).

Of course, opening up the IM system so I could log into my account from Trillian or Pidgin would be even better, but perhaps once the agent doman's up. Maybe. Hopefully.

Monday, October 27, 2008

Fun with SL error messages

Using alerts.xml and an online English to Cockney translator (thanks Gill), I present to you Second Life errors as spoken by a Cockney...ite? See if you can guess which one is which:

"Lawd above! Unable ter connect ter [SECOND_LIFE]. DNS could not resolve da 'ost name. Please verify what yew can connect to da www.secondlife.com web site. If yew can, but continue to receive dis error, please go ter www.secondlife.com/suppawt an' repawt dis problem, innit."

"Awright geeezzaa! We're 'avin' barney rubble connecting. There may be a problem wiv yaaahr in'ernet connecshun awer da Second Life servers. You can either check yaaahr in'ernet connecshun an' popperoo testing in a few minutes, click Seaweed ter connect ter aaahr suppawt site, awer click Telepawt ter attempt ter telepawt 'ome. Sorted mate."

"Gawdon Bennet! Camel Toe ter da Official Linden Blog, fer da Latest Jelly Roll Blues an' Infawmashun. OK?"

"Blimey! You are a member ov an' all baregroups ter join anuvver one. Bell Cheese leave at least one group befawer joinin' dis one, awer decline da offer. To leave a group select da Groups... Opshun from da Edi' menu. [NAME] 'as invited yew ter join a group as a member. [INVITE]. Nuff said, yeah?"

I can only imagine how the 'engrish' version would turn out....

Thursday, October 23, 2008

More ugh from the Lab

http://blog.secondlife.com/2008/10/23/update-on-linden-lab-blog-revamp/

Here's the comment I left:

“I’m happy to report that we have some great things ahead for the Linden Lab Blog. We are on track with a multi-stage process of upgrading our Web presence, including both the Blog and the Forums. Our goal? To improve the information you get about Second Life and enhance our dialogue with you.”

Enhancing the dialog by disabling a communication resource without any word until *after the fact*?

Since when was it standard practice to disable the old model before the new one was ready? Would it really kill your *communications director* to continue communicating during the transition? Or are you trying to train us to get used to even more limited communication, because that’s what the past few weeks have felt like.

You keep saying that you “get it,” then you do things that show the exact opposite. You’re not inspiring any confidence in your customers here.

Wednesday, October 22, 2008

Error messages

I have an error threshold of about five errors before I start to get really frustrated and my blood pressure rises. For example, here is my recent experience with git bash:

Welcome to Git (version 1.6.0.2-preview20080923)

Run 'git help git' to display the help index.
Run 'git help ' to display help for specific commands.

McCabe@MCCABE-PC /c/imprudence
$ git branch
12015vanillaSL
1210vanillaSL
VWR-9352
bob
browserhome
browsermenu
fuckyougit
fuckyougit2
* fuckyougit3
imp-1216
master
rebranding

McCabe@MCCABE-PC /c/imprudence
$ git checkout imp-1216
error: You have local changes to 'ChangeLog.txt'; cannot switch branches.

McCabe@MCCABE-PC /c/imprudence
$ git reset --hard HEAQD
fatal: ambiguous argument 'HEAQD': unknown revision or path not in the working t
ree.
Use '--' to separate paths from revisions

McCabe@MCCABE-PC /c/imprudence
$ git reset --hard HEAD
HEAD is now at 5494c2d I really hate you sometimes git

McCabe@MCCABE-PC /c/imprudence
$ git checkout imp-1216
error: Untracked working tree file 'linden/indra/llcommon/llhttpstatuscodes.h' w
ould be overwritten by merge.

McCabe@MCCABE-PC /c/imprudence
$ git commit -a -m "seriously, fuck you git"
# On branch fuckyougit3
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# 0001-VWR-8341-Bring-back-a-UI-indicator-of-Flycam-text.patch
# 1-21_alt_avatars_login_2a.patch
# 3rd Party Libs for SL Viewer (VS2005 edition).rar
# VWR-9352.txt
# linden/doc/contributions.txt.rej
# linden/indra/build-vc80/
# linden/indra/lib/python/indra/__init__.pyc
# linden/indra/lib/python/indra/base/__init__.pyc
# linden/indra/lib/python/indra/base/llsd.pyc
# linden/indra/lib/python/indra/base/lluuid.pyc
# linden/indra/lib/python/indra/ipc/__init__.pyc
# linden/indra/lib/python/indra/ipc/compatibility.pyc
# linden/indra/lib/python/indra/ipc/llmessage.pyc
# linden/indra/lib/python/indra/ipc/tokenstream.pyc
# linden/indra/lib/python/indra/util/__init__.pyc
# linden/indra/lib/python/indra/util/fastest_elementtree.pyc
# linden/indra/lib/python/indra/util/helpformatter.pyc
# linden/indra/llcommon/llhttpstatuscodes.h
# linden/indra/newview/Imprudence 1.21.2 stable.zip
# linden/indra/newview/Imprudence 1.21.2 stable/
# linden/indra/newview/OpenJPEG.dll
# linden/indra/newview/SLVoice.exe
# linden/indra/newview/SLVoiceAgent.exe
# linden/indra/newview/alut.dll
# linden/indra/newview/app_settings/message.xml
# linden/indra/newview/app_settings/message_template.msg
# linden/indra/newview/app_settings/mozilla/
# linden/indra/newview/app_settings/mozilla_debug/
# linden/indra/newview/fmod.dll
# linden/indra/newview/freebl3.dll
# linden/indra/newview/gksvggdiplus.dll
# linden/indra/newview/imprudence-bin (2).exe
# linden/indra/newview/imprudence-bin (3).exe
# linden/indra/newview/imprudence-bin browser edits.exe
# linden/indra/newview/imprudence-bin.exe
# linden/indra/newview/js3250.dll
# linden/indra/newview/libeay32.dll
# linden/indra/newview/llkdu.dll
# linden/indra/newview/llworld.cpp.rej
# linden/indra/newview/mozilla-theme/
# linden/indra/newview/nspr4.dll
# linden/indra/newview/nss3.dll
# linden/indra/newview/nssckbi.dll
# linden/indra/newview/ortp.dll
# linden/indra/newview/plc4.dll
# linden/indra/newview/plds4.dll
# linden/indra/newview/secondlife-bin (2).exe
# linden/indra/newview/secondlife-bin 1216.exe
# linden/indra/newview/secondlife-bin.exe
# linden/indra/newview/smime3.dll
# linden/indra/newview/softokn3.dll
# linden/indra/newview/srtp.dll
# linden/indra/newview/ssl3.dll
# linden/indra/newview/ssleay32.dll
# linden/indra/newview/tntk.dll
# linden/indra/newview/vivoxsdk.dll
# linden/indra/newview/wrap_oal.dll
# linden/indra/newview/xpcom.dll
# linden/indra/newview/xul.dll
# slviewer-artwork-viewer_1-21-2-r96080.zip
# slviewer-artwork-viewer_1-21-r97383.zip
# slviewer-src-viewer_1-21-2-r96080.zip
# slviewer-win32-libs-viewer_1-21-2-r96080.zip
# slviewer-win32-libs-viewer_1-21-6-r99587.zip
# slviewer-win32-libs-viewer_1-21-r97383.zip
nothing added to commit but untracked files present (use "git add" to track)

McCabe@MCCABE-PC /c/imprudence
$ git checkout imp-1216
error: Untracked working tree file 'linden/indra/llcommon/llhttpstatuscodes.h' w
ould be overwritten by merge.

I created the fuckyougit3 branch because git originally gave me a "you have local changes to floater_instant_message_ad_hoc.xml cannot switch branches" error when I tried to checkout to the imp-1216 branch, and "git reset --hard HEAD" didn't fix it. In the past, I'd discovered that committing to a new branch would then let me checkout to the branch I want (hence fuckyougit and fuckyougit2).

So, I created fuckyougit3 and tried to checkout to imp-1216, only this time I got a new error message: git couldn't change branches, a *.nib folder in linden\indra\mac_crash_logger\ could not be modified. Fine, I said, I'll delete it manually. I browsed to the folder and sure enough, it was read only. I tried to modify the flag, but Vista gave me a "you do not have permission to delete this folder" error (something I really hate, because it will often prompt you for ADMINISTRATOR permission first. Talk about confusing error messages...). Trying to delete just gave me that annoying "cannot delete, screw you" error (should have known better).

Closing down explorer and half my processes finally killed the folder, which is where my command line entries above start. Reading the manual didn't seem to help, so I sent an IM to Jacek (my git expert). She recommended just doing a forced checkout:

McCabe@MCCABE-PC /c/imprudence
$ git checkout -f imp-1216
Checking out files: 100% (400/400), done.
Switched to branch "imp-1216"


Finally, the right branch. I can't help but wonder, though, what the heck is up with all these error messages I keep getting. Am I fucking up Imprudence? Is the crash bug I can't seem to track down somehow related to some mismanaged source file or not?

Either way, I've hit my error limit for the next hour or so.

Tuesday, October 21, 2008

The pumpkins are coming! The pumpkins are coming!


(See MISC-1728)

10,000 and counting

With VWR-10000, the JIRA viewer category has officially crossed the 10,000 issue mark as of this morning. Almost wish we'd had a betting pool to see when it'd happen :)

15,448 issues have been filed since January 7th, 2007. At 653 days later, that comes to about 23.7 issues filed daily.

Of course, there are ups and downs, particularly when an optional version becomes mandatory and all the bugs that were reported by power users get re-reported by the rest, and many are incomplete or better directed towards support.

Still, though, I'm curious just how SL's JIRA rate compares to other people's issue trackers.

Monday, October 20, 2008

Fun source comments

void crashAndLoop(const std::string& message)
{
// Now, we go kaboom!
int* crash = NULL;

*crash = 0;

while(true)
{
// Loop forever, in case the crash didn't work?
}
}

(from llerror.cpp)

Pondering inventory loss

On Oct. 8th, I submitted WEB-826 to add a link to the inventory loss wiki page to the JIRA's dashboard. At the time, there had been 19,994 visitors to the inventory loss page:

http://wiki.secondlife.com/wiki/Inventory_Recovery_Steps

Now, checking today, the number of visitors has jumped all the way to 20,959! Admittedly, those are not unique hits, but 965 visitors in 12 days is still a heckuva lot of people considering SL's active population size.

Imagine the number of visitors if you stretch that number out over an average month's time (2,452) or a year's (29,352). And those are just people who are seeking help in the *right place*! Imagine all the people who seek help in the wrong place, or who file JIRAs, or contact support directly, or don't do anything at all but complain to their friends. Who knows just how many people have lost their inventory items due to the way SL currently handles things (support, if you ask, will advise you never to use "Replace Outfit" as it causes no-copy HUDs to be lost).

The point is that we have no idea just how severe the inventory loss problem is, but it clearly affects a significant portion of the SL population (I've lost tons of items before, myself, although nothing I really care about yet). Despite promises of an open initiative, there's been no follow-up, and no evidence that inventory loss has lessened or worsened other than anecdotal evidence (and WEB-276 still remains resolved as "fixed").

Saturday, October 18, 2008

A look at what's to come

Tonight, I got tired of banging my head against back-end stuff and doing inworld work, so I decided to sit down and add at least one feature to Imprudence. Here's the result:

The inworld browser can now be accessed from the view menu.

Your "Home" URL can now be set/loaded.

The browser window remembers the last page you visited, defaulting to your home page on relog. 

Not exactly on par with the work Jacek's been doing lately, but I have to say, I'm rather pleased with myself. A good way to spend the evening. 

(BTW, you can see two linden bugs in these screenshots: VWR-3947, and the classic skin using the silver skin's scrollbars (this was fixed in 1.21.3).)

Friday, October 17, 2008

Developing a new skin, part 1

Currently, developing a new skin for Second Life is a difficult task. First, you need to understand what each xml file does. Then, you need to learn what limitations there are in the files. Finally, you need to learn how to trick the viewer into bypassing them
The good thing is that there actually several ways to bypass the xml limits to create some truly interesting skin choices. For example, using only the xml files, I was able to change this:



To this:


Now, it's obviously not finished, but there's some interesting edits I discovered while making it. For example, adding the background. I started with one image embedded in a panel. In floater_chat_history.xml, I added:

<panel bottom="2" filename="panel_bg_history.xml" height="290" max_height="290" left="0" width="535"       follows="left|right|top|bottom" use_bounding_rect="true"/> 


The contents of panel_bg_history.xml:

<?xml version="1.0" encoding="UTF-8"?>
<panel bottom="0" default_tab_group="1" follows="left|bottom|right|top" height="21"
     left="0" name="bg_history" use_bounding_rect="true" width="100">
  <icon bottom="-24" color="255,255,255,255" scale_image="true"
         follows="left|right|top|bottom" height="26" image_name="chat_history_background.tga"
         left="0" width="100" />
</panel>

This covers up the background with a nice LCARS image background. The height is offset so that the background starts just underneath the window title (covering the window title with a panel makes it undraggable, for obvious reasons). Another, more complex (and heck, professional) way to do it would be to add the individual components of the LCARS background as separate images and aligning them via XML.

To skin the title bar, you need to the tag to hide it with an image. Here's what I added to floater_chat_history.xml

<icon scale_image="true"
         follows="left|right|top" height="18" image_name="title_history.tga"
         left="0" width="535" bottom="-18" />

title_history.tga aligns with my background panel image, creating the illusion of a seamless panel. Part of the problem with this method is that it doesn't resize well. At medium sizes, the window looks good, but at large/small sizes the window looks pretty bad. So, I made my chat history unresizable (converting the one-image background into multiple components should fix that--something I'll have to look into later). 

The rest of the edits are all basic changes to the file: modifying layout panels, positions, etc. So, there you have it. Some fun skinning tricks. 

Thursday, October 16, 2008

GUI Olympics

The 2008 GUI Olympics officially began this week. Basically, the GUI Olympics are a skinning competition in multiple categories for prizes. From the home page:

The GUI Championships is an inter-website contest in which top graphic designers from around the world compete for $15,000 in cash and prizes.

This year's contest focuses on WindowBlinds, IconPackager and Dreams. Anyone can participate as an individual or part of a team.

I love competitions like these. Not just for the incredible talent they attract, but looking at how different people solve--and don't solve--problems has always been intensely inspirational for me. I wish I had more skill with photoshop. Much like NaNoWriMo, it's a contest I'd love to try my hand at if I ever find a cure for my lack of self-discipline. 

If anyone wants to participate, you can download a 30 day trial copy of WindowBlinds and IconPackager, as well as Dreams for free. 

Tuesday, October 14, 2008

While Visual Studio chugs...

As it seems Imprudence is taking forever to compile, I thought I'd post an update.

Good things that happened to me today:

* Had a nice long talk with Indya on Skype. We met a few days ago through a mutual friend, and hit it off. Once again, I've discovered someone through SL that I probably would never have met in real life.

* Jacek taught me how to use Git. I'm really quite impressed with it, now that I feel like I know what I'm doing. I suspect she must have read my mind, because earlier I was thinking, "I wish I could make sense of this. I really need to work on a new branch." She's a good teacher. 

* Last piece of EC's theater is nearly complete. It's really something special, having this building placed. Gill and I worked on it together; she designed it after a theater she grew up loving, and in that way I love it too. It's a little bit of us, together; it means a lot to me to give that to her. 

* Took more screengrabs for my LCARS skin. Contemplating multiple configurations, even though there's a lot of limits as to what's possible

Not-so-good things that happened to me today:

* I woke up sick as a dog this morning, fighting dizziness and nausea. I tried to work, but ended up spending most of my day curled up in a blanket, napping. 

* Vista froze while compiling Imprudence. 

Tuesday, October 7, 2008

*gnashing teeth*

You know what really frustrates me as a user? Knowing exactly what I want to do, but having no idea how to do it. I know it's possible. It's a built in feature. I just have no clue how to use this feature, and I feel like I've tried every damn option to get it to do what I want it to do, but it won't.

What pisses me off the most is that I know other people out there are doing what I want to do with this program (otherwise it wouldn't even exist). Only, there's no documentation. No help file. No tutorial that's accurate. And every time I look where I would consider the feature I want to naturally be, it's not there!

I just feel like a fucking idiot, trying to use this damn program, and I hate it.

Monday, October 6, 2008

Did you know?

Thanks to WEB-106, the JIRA will now be getting wiki formatting in the description and comment fields on October 8th.

This has some interesting ramifications for code blocks and list formatting, but even more important than that, if you read the misc section:


The JIRA's getting emoticons!

Thursday, October 2, 2008

*rolling up the sleeves*

Last night, Jacek challenged me to name one major usability improvement in Second Life since 1.16. I figured it should be easy. Not only have I read through an insane amount of release notes for my Old Versions page, but I started using SL with version 1.14, so you'd think I'd be able to rattle off a few usability improvements off the top of my head.

Only, I couldn't. I can't think of one major usability improvement in the SL viewer Mind you, I can think of several fixes for broken Linden designs (un-fucking-up the communicate window, the featurettes branch), but one major usability feature? Drawing a blank.

Man, we've got a lot of work ahead of us.

Wednesday, October 1, 2008

Spore UI

Having played through my first six hours of Spore, here are the conclusions I've drawn, UI-wise:

Building UI, Ease of Use:
Spore 1, Second Life 0
- Relying solely on point-and-click, there's practically no barriers to entry. Anyone can use Spore's creator to create something fantastic, even Granny.

Building UI, Power:
Spore 0, Second Life 1
- As always, when dumbing down occurs it's at the cost of power features. In Second Life, I have far more control over what I create (even though Spore beats SL soundly in the looks department, none of those options are presented to users).

Camera Controls:
Spore 0, Second Life 1
- I have to say, I have not found any other application that nails the camera as well as Second Life does. Spore comes close, using a left-click-move, right-click-rotate system, but left-click movement is often error-prone ("No, I clicked here! Why won't you just move there?") and are not flexible enough to really give that feeling of open exploration Second Life provides. (Spore attempts to overcome their strict camera limitation by "fading out" objects that would normally block the camera, allowing you to move forward with mouse clicks; this works most of the time, but isn't robust enough to handle times that it doesn't.)

Fun Factor:
Spore 1, Second Life 0
- Earlier this evening, I tried to fly across a sim to attend an event only to get lost in a web of ban lines. While in Spore you just have fun, in Second Life you have to make your own--and sift through everyone else's attempts while doing so.

General UI:
Spore 1, Second Life 0
- There is a clear consistency to Spore's UI that Second Life simply lacks. The UI for the most part stays away unless you purposefully seek it out, giving it a nice immersive quality. There are a certain limitations that those used to a more powerful UI should find frustrating, but the defaults are strong enough it's easy to get used to them.

All in all, a lot to learn from. I have wanted to create a more iconic/immersive version of Second Life's UI for ages now; Spore gives some good hints as to what such a skin might look like, and how it could function.

(If I'm up to it, I will expand on this with pictures tomorrow. For now, bed time)