31 July 2021

Leaving Firestorm

If you're running the Mac version of Firestorm downloaded from the official website, it was built on my desktop computer, most recently a Mac Mini I purchased last year mainly for that purpose.

The current version,, is the last for which that will be the case. Effective immediately, I have resigned from the Firestorm team as developer.

This is very bittersweet for me. I was one of the very last of the original project team to still be a part of the project. In a very real sense, it would not exist without me: I am the one who convinced Jessica Lyon to fork the Emerald project in the first place. (Perhaps she'll forgive me for that one day.) I have put 11 years of my life and a substantial amount of money into it.

The simple truth is that being a developer for Firestorm has gotten to be un-fun. The group dynamics have become toxic for me, and I've been keeping my involvement down to the amount I could take. I believe things are not going to get better.

In addition, I have started a new job recently - a job I got in no small part because of my involvement with Firestorm. That is taking more and more of my time.

Even so, this is a painful decision for me to make, and one I do not make lightly. It is my hope that the team can continue to serve the users of Second Life with the high quality, well-tested code it has become known for.

I am not leaving Second Life; far from it. It is perhaps the biggest part of my life outside of family and work. I have too many close relationships, too many good friends, and too many fun things to do to leave it. But I will no longer be active in viewer development.

I hope that I have managed to give at least something back to the Second Life community. I wish the team well.

19 August 2020

Backing away from leftism

I think very highly of Wendy Starfall, formerly of OpenCollar and later of Peanut No. 9 and Heartcore. She has put in a lot of hard work to make collars and other RLV devices that work well and are easy to use, without being as heavily resource-intensive as earlier OpenCollar versions. The folks behind OpenCollar took the group away from her and have been waging an unjust, constant campaign of hate and slander to try to drive her out of Second Life for it. I use and recommend her stuff wholeheartedly.

I think it's unfortunate that Wendy feels the need to have the collar and the group espouse her political views. This would be unfortunate no matter what those views are, but she is an avowed leftist, and pushes political causes at the far left end of the spectrum. I disagree with nearly all of those stances, as a conservative who believes in freedom and individual rights.

Last night, Wendy posted this to the channel on the Discord server for her products used for updates:

1:05 PM : 

@everyone A kind, public reminder that I love all of you very much Tue, Aug 18 2020 11:04:46 AM PDT Climate change is no political propaganda. Polar bears, caribous and hedgehogs are not antifa terrorists. The wearing of protective face masks during a pandemic is not fascist oppression. Asking for racial equality, gender equality and no discrimination of any kind against people based on their sexual orientation is something we stand up for as HUMAN BEINGS and not as "political parties". Please stop politicizing everything. Believe in what your heart tells you. We flinch before we punch for a reason.

I object to every one of these statements, some more so than others: Climate change is not political propaganda, but it has been weaponized by those on the left to try to force through the kind of socialist economic destruction they have been pushing for a century; polar bears et al are not Antifa terrorists, but Extinction Rebellion and similar groups are; the wearing of protective face masks during a pandemic is not fascist oppression, but forcing people to do so on pain of fine and imprisonment is; racial equality and the rest is something we should all support, but not the Marxist, segregationist, black supremacist demands of the Black Lives Matter movement or the rioting that goes along with it. The politicization of all of these issues started on the left, and while conservatives push back, if the left would stop politicizing everything, we would see a sharp drop in the level of rancor in our society.

Let me clear: socialism is the most destructive, evil ideology ever put on paper. It has killed over a hundred million people, and made billions more people's lives hell on earth. Not only that, but while it's possible to vote socialism in, you have to shoot your way out of it. The United States will only become a socialist country literally over my dead body.

I found it extremely jarring to see her push those hard-left viewpoints under the headline that she loves us all very much. Those two are polar opposites of each other. I know Wendy means well, but I just can't sit idly by and let that kind of thing go unchallenged.

I asked where I should post a rebuttal. Wendy laid into me and basically told me that that server is her space and if I wanted to rebut her posts, to do it on my own space. Others there dogpiled on top of me. I finally decided I, and others who believe as I do, wasn't welcome there any more and left.

Wendy has now apologized to me. I accept that apology. It doesn't mean that I feel any more welcome there, however, given the reactions of others. I have rejoined the server, but have muted every channel in it so that I no longer receive any Discord notifications. I will use it for technical support exclusively and leave the leftists there to their echo chamber.

Conservatives on Second Life, as with much of online society, have to censor themselves severely. We cannot state our opinions with the same freedom as leftists, lest we be hounded out of our own spaces and off of the net entirely. I, for one, am sick of it.

I believe our society is rapidly approaching the point of a real, shooting civil war. We have gotten to this point because we can no longer discuss our differences calmly and rationally. In the past, Wendy and I have discussed those differences without shouting at each other. I understand the stresses she has been under lately, and am sorry I added to those stresses. I think it's best for now that I disengage and let things lie where they are.

I consider Wendy a friend. She's a genuinely caring person who has put up with far more crap than anyone ever should. I've tried to help what little I am able. But now...I'm sorry, but I just can't get close enough, any more. Maybe in the future, but for now, it's best we go our separate ways.

18 June 2018

Firestorm and OS X Mojave

At the Apple Worldwide Developer's Conference held a few weeks ago, Apple announced OS X 10.14 Mojave. In amongst all of the other things Apple announced, one announcement has made waves in the gaming world: they announced that, as of Mojave, OpenGL was deprecated and would no longer be maintained.

This is important because Firestorm, like every other graphical Second Life viewer, is based on OpenGL

I got an email from a concerned user this morning asking about the problem and urging us to convert Firestorm to Metal, Apple's new and improved 3D graphics API. Here's my reply:


What follows is my own personal opinion. I’m not speaking for the Firestorm team, and certainly not for Linden Lab.

I think Apple seriously shot themselves in the ass with their recent announcement. In essence, they told the gaming world to drop dead.

First, what they did and didn’t announce. What they did announce was that Mojave would deprecate OpenGL. What they did not announce was a drop-dead release beyond which OpenGL would not work. Indeed, OpenGL works in Mojave, and with a couple of fixes not related to the graphics subsystem, the Linden viewer (and, presumably, Firestorm; we haven’t tested it ourselves) runs on Mojave just fine. Those fixes will be in the next release of Firestorm, which we are moving toward.

To understand the magnitude of the problem, let me lay a couple of numbers on you. Firestorm currently consists of 25,649 files of source code, containing well over 1.2 million lines. I don’t know just how much of that is OpenGL code. What I do know is that there is no clean boundary in the viewer’s source code between the parts that use OpenGL and the parts that don’t; OpenGL is scattered throughout the entire codebase. This is true of every viewer based on the Linden Lab code, which is all of them that do graphics (with the notable exception of Lumiya, which was a ground-up implementation for Android, and a remarkable technical achievement in its own right). Some of that code is over 20 years old at this point.

Simply to factor all of that out so there’s a clean separation between the graphics code and the rest of the viewer is a monumental task. And that’s just a preliminary. Once that’s done, then a separate renderer would need to be written just for the Mac. That’s not a trivial undertaking, and to the best of my knowledge, there are exactly five people on the planet who understand the Second Life render pipeline well enough to do it: two of them work for Linden Lab, and the other three are certifiably insane. None of them are on the Firestorm team. In any event, the effort required to do this is measured in man-years.

It’s telling that Apple committed large amounts of time and money and people resources to Unity and Unreal to get their game engines ported to Metal. I’d be astounded if they did the same for Second Life. The market is simply too small.

My understanding of the Linden Lab position on this is that they’re evaluating what they are going to do going forward, and that no decisions have been made. I would hope they are at least talking with Apple to see how much time they have. They probably have contacts that let them do that. I do not, and in any case we’re dependent on what the Lab does.

While I am a faithful Mac user and have been for the last 16 years, I have not actually used a Mac as my primary Second Life system in a few years. Apple’s OpenGL implementation, not to put too fine a point on it, sucks. I usually get 30-40 FPS on one scene I spend a lot of time in, on my dual-hex MacPro 3.3 GHz/64 GB, with a Radeon R9-280X. I have actually wound up running Linux Mint natively on a second Mac Pro, this one a dual-quad 2.9 GHz/48 GB with a GTX 960. On that same scene, with the same window size, I easily turn 140 FPS or so.

Personally, I don’t see how Second Life on the Mac, at least natively on OS X, will survive the loss of OpenGL. The market’s too small and the effort’s too large to make it economical. I personally expect to find myself running Firestorm exclusively on Linux, or else under Windows in a virtual machine on OS X (which I haven’t tested at all in the past several years) at some point in the future.

Again, I must remind you that Apple has deprecated OpenGL on OS X. All that means is that they will stop supporting it at some point in the future. That point is not today, and they have not said when that point is. Until they do, Second Life, and Firestorm, will run on OS X as well as it does now.


Update, 22 June: At his Meet the Lindens interview with Saffia Widdershins at the SL15B celebration yesterday, Oz said that "we will find a way to keep Second Life running on the Mac." This is good news. I hope it comes to pass.

24 January 2018

Don't just turn up RenderVolumeLODFactor!

Firestorm, like all Second Life viewers, has a large number of configuration settings. One of the most widely misunderstood is named RenderVolumeLODFactor. It’s not at all uncommon for Second Life content creators to tell their users that this should be set as high as possible so their creations can be seen properly.

But what is this magic value, and what does it really do?

LOD stands for “level of detail”, which means in how fine detail the viewer will render an object. A higher LOD means that the viewer will show the object with greater detail than a lower one. A small object rendered at a lower LOD will be shown as a simpler shape; a higher LOD will be rendered more accurately.

Of course, it takes more work to render a complex object then a simpler one, and the higher the LOD required to render it correctly, the harder your computer and graphics card have to work. If there are many objects with high LOD in a scene, your computer will slow down.

The viewer manages this by determining the required LOD based, in part, on how far away you are from the object. A small, complex object 20 meters away can be rendered with a lower LOD, and you’ll never notice the difference, because it doesn’t take up enough space on your screen to show all that detail anyway. If you move yourself (or the camera) closer, the LOD will go up because the object appears larger, and the details will become visible.

RenderVolumeLODFactor controls how the viewer adjusts the LOD based on your distance from the object. It’s used in calculating the actual LOD. A higher value makes the viewer compute a higher LOD, and render objects with more detail, than a lower value would for any given object and distance.

Content creators love to set this value high, so that your viewer shows their creations with all of the details they build in. Some creators recommend numbers in the thousands. This is a very, very bad idea.

Because a higher value makes your computer work harder, raising it needlessly slows your computer down without really doing anything to make things look better. A detail that takes up a third of a pixel on your screen won’t be visible no matter ho high you set the LOD factor. Your computer will still do extra work trying to show it, though.

Not only that, but the calculation that uses the RenderVolumeLODFactor value gives a totally meaningless result for any factor above 10. It won’t crash the viewer, but it doesn’t help matters, and you’re still running the computer much too hard to no purpose.

For the past couple of years, Firestorm has enforced a limit of 8 on that value. We recommend no higher than 4, and will reset the value to 4 if it’s set higher than that. The next release will also give you a warning if you attempt to set it higher than 4.

If you’re doing high-quality photography, then you may wish to set your RenderVolumeLODFactor higher than 4. before you do so as a matter of habit, though, try it at 4 and see if it makes any visible difference. Chances are it won’t.

We hope that creators who tell their customers to use extremely high RenderVolumeLODFactor values will stop doing so. All they’re doing is showing they don’t understand how things work.

05 October 2016

Announcing the Hospes Lategum

My wife Chibi Souther and I have been working on a new project. We've created a world, and a roleplay environment, for latex lovers in Second Life: Hospes Lategum.


The Hospes Lategum is a society of people who, since about 500 BC, have permanently joined physically and mentally with living latex symbionts known as Lategum. The joining gives the Host greatly extended life and immunity from a wide range of environmental and biological hazards. No Host has ever died of old age or illness, though many have died of violent causes. Their need for food and water intake is greatly reduced, as well.

In their unjoined state, Lategum are, for all intents and purposes, liquid latex. They form a hive mind and communicate among themselves. In joining with a Host, they leave the hive mind, and in return gain access to the Host's mind and senses. This allows them to experience life much more directly.

The Lategum retain their telepathic communication abilities. As the bond with the Host grows, the Host gains the ability to use that to communicate with other sufficiently advanced Hosts, and in rare instances with the hive-mind itself. This is the basis for the ranks in the Hospes Lategum. The more fully joined the Host is with their Lategis, the higher their rank. The very highest ranks, Beta and Alpha, serve as senior leadership, but that is as much due to their ability to understand what the Lategum want and give those intentions effect as it is any other factor. Further, all Hosts are equals, regardless of rank, and the Alpha is subject to the same rules and penalties as the Zeta just putting on his leotard for the first time.

When one becomes a Host - the term refers to all members, even Zetas who have not been joined to a Lategis yet - one gives up their name and clothing and other trappings of one's former life. A Zeta is given a transparent latex catsuit and a leotard, which they will not remove until they enter the tank to be joined to their Lategis. The leotard bears their Host ID. This ID is assigned by the Lategum and molded into the leotard when the dispenser gives it to the new Host. From that point forward, they are known by their rank and ID, as in "Zeta 7703". All hosts are referred to as Brother or Sister, as appropriate, as well, so one might address "Sister Zeta 7703" or "Brother Gamma 3501" or "Sister Alpha 8369". They also wear a collar that not only serves as a reminder of their service, but also bears the mark of the Hospes Lategum. The collar also marks the boundary above which the Lategis will not encase the Host.

When the Zeta is ready to be joined to their Lategis, they first remove their uniform, and stand naked for the last time in their lives. They then swear the Hospes Lategum Oath, by which they devote their lives to serving the peoples of the Earth, before entering the joining tank. The Lategum flow into the tank, and one of them joins with the new Host. The tank empties, and the newly joined Host, now at the rank of Epsilon, steps out to begin their new life.

Part of progressing through the ranks of the Hospes Lategum is spending time in silence, surrounded by liquid latex, meditating and learning to communicate with the Lategis. The required time increases as the bonds one seeks to form increase. As the Host ascends in rank, the color of their uniform leotard changes, as does the rank letter on it next to their ID.

With the sole exception of the current Alpha, all who are not fully human within the Hospes Lategum are products of the society's genetic engineering efforts. They do have human characteristics to varying degrees, ranging from nekos with feline ears and tail to people who differ from their feral antecedents only in being bipedal and sapient. Not all Children of the Lategum, as these are known, are joined to a Lategis and part of the society; many have, at their own request, been sent out into the wider world.


The Hospes Lategum group in Second Life is open to both sexes and all species, subject only to whether the avatar's body is such that a uniform can be made for it. The story is flexible enough to allow for a wide range of personal histories.

As a roleplay community, members are expected to be able to roleplay. In order to advance in rank, those who don't have a known history in other RP groups will be expected to demonstrate those abilities. This requirement isn't intended to discriminate, but rather to ensure that people can actually roleplay.

The only cost to become and remain a member of the Hospes Lategum is the MD Pod Prisoner suit, which is used for the meditation system. If you already have one, you'll need to have available (either saved or unpacked from the original box) a level 0 helmet. If not, the cost is L$300, and it may be purchased in the uniform fitting room. The Hospes Lategum uniforms and accessories are free of cost.

We do not require that you remain in uniform when not at the Hospes Lategum island. When there, however, you must be in uniform, including an enabled renamer and group tag. At Epsilon rank and above, you have been joined permanently with your Lategis, and so may not appear there without it.


Interested? Check out the documentation at the Hospes Lategum wiki. The Hospes Lategum headquarters are in the Catalina region of Second Life. Any Gamma or above member can invite you to the group.

I hope to see you there.

17 July 2015

LL to merchants: No TPV for you!

Yesterday, Linden Lab announced that merchants would be migrated to the new Viewer Managed marketplace beginning next Thursday, July 23, and that once migrated, merchants would need to use the Second Life VMM Viewer to manage their stores.

Never mind that the viewer is, as I write this, only a release candidate, not even in full release yet.

I've written before about the process we follow to keep our code up to speed with LL's. The main thing of interest here is that we need to do things in the same order as LL releases them, so as to keep merges from becoming an unmanageable mess. LL only released the prior merge, the series of attachment fixes known as Project Bigbear, this past Tuesday.

On top of that, the Lab insists that we not release code of theirs until it's at least at RC status. We can merge earlier if we wish - at our own risk. We did, actually; Ansariel Hiller has a repository she's been merging the VMM stuff into. Repeatedly. LL has, more than once in the process of VMM, reformatted the XML code that describes the user interface. Every one of those merges has been a major effort to clean up. When she complained, she was told "that's what you get for merging early". The clear message: don't merge things until they're RC.

So with all of this, we're just now getting to the point we can merge VMM into the mainline viewer. That's when we begin to make sure it fits in with the rest of the code, and find and fix bugs (often, LL's), and basically make sure it's up to our standards. Our release cycle takes a few weeks because we actually test things before turning them loose.

The upshot: We will not have a Firestorm release with VMM in time for our users who are being forced to migrate to VMM.

This is not a problem to LL, of course. As far as they're concerned, users should be on the official viewer, anyway.

To our users, however, it is a problem. LL has a terrible track record of listening to users, and it shows in their viewer. We're already starting to hear complaints from folks who want no part of the LL viewer. This thread on SLUniverse is typical.

Jessica Lyon posted late in that thread (as I write this) that we may release a preview viewer for merchants to use to do VMM while we rush through the QA cycle for the full release. This is a much less than ideal solution; previews are explicitly unsupported, may change, and aren't guaranteed to work properly. We don't like doing them. In this case, LL's ...planning may force our hand.

I don't know why LL feels compelled to force people into VMM while the viewer that's required to support it isn't even an official release yet. Whatever the reason, this seems like particularly poor planning, as well as a distinct "see figure 1" to TPV developers and users.

Sadly, it's in line with their normal ways of doing things, and what we've come to be used to.

Update, 18 July: According to this post on LL's forums, the VMM version of the official viewer won't be a full release by the 23rd either! Not only is this a "see figure 1" to TPV-using merchants, but merchants in general. The net effect, since Oz will not commit to releasing the VMM viewer next, is to force us to either push VMM as it stands now and deal with potential merge headaches should they decide to release something else first, or else hold off on our release and force users to use the LL viewer to manage their Marketplace items.

Real TPV- and merchant-friendly, LL...

07 July 2015

Another one bites the dust

I did something this morning I haven't done in years on my main account: "set home to here".

For the last several years, my home is on a sim run by my good SL and RL friend Axi Kurmin. Cursed is a Goth village, home to the last true Goth club in SL, Gothika, and carefully curated to keep an overall theme. Axi did all of the landscaping and, after an incident with a former business partner, controlled all of the building as well. There's a small commercial section, and Tonya's Restraint Works' main store and demonstration playroom are there.

All of that is, at minimum, moving elsewhere. Axi finally gave in to the stress and the economic pressures and is dropping the sim. Gothika and the cemetery that goes with it are moving. So is Axi's workshop. The other rentals are ending as of July 23, the due date of the next tier payment.

Why? Put simply, the US$295 a month sim rental is too much for Axi to support. Having her own sim let her run events her way, on her schedule and on her terms, but that's become far more stressful than fun. The rents she was able to bring in didn't come close to covering the cost. And she's got a lot better use for US$295 a month these days than running a sim that's become a source of stress.

So now we have one fewer privately-run sim in SL.

Last night, my wife Chibi and I moved our home to a new location. I have my own homestead that I used for other things, but mostly rented out. My home is now there, on a very tall hill another friend terraformed for me. (I can't terraform worth a crap.) We got a copy of the house, and moved everything to the new one in just the same spots as before so it immediately feels like home. There's still some work that needs doing, but not much.

The store and playroom are, at least for now, going to close. It's not like I got a lot of business out of them anyway. I've got a project percolating in my mind that will eventually require a new physical store, but for now my stuff will only be available on the Marketplace.

Perhaps I should rename my sim, though...somehow, Catalina doesn't seem appropriate any more.

I have to wonder how many sims are going away because of the price. US$295 a month is pretty stiff for a hobbyist, after all. With the release of experience tools, LL is giving creators the wherewithal to create the kind of experiences that Ebbe Linden says he's after. That's great, but it's getting harder and harder to be able to afford the kind of space needed to create a great experience. (And individuals are not getting grid-wide experience keys.) LL's just shooting themselves in the foot keeping tier as high as it is.

I know tier's LL's cash cow...but is that business model sustainable in the face of the outlays needed for Sansar? How many more sims can LL afford to lose? Axi's one sim isn't much, true, but it is emblematic of a bigger problem.