Oranges

I’ve mentioned in passing before that I have a greenhouse on one of my parcels at ground level.  I’m not much of a green thumb in RL as I live in an apartment, but I sure can be one in SL 🙂

Owning a greenhouse means that I’m always on the lookout for new plants to display there, and today I noticed a FREE group gift from CJ Creations.

This is one of two colors of a very pretty vase of lily of the valley.  You can pick these up from their store for FREE with a FREE group join.

While these are beautiful to photograph, the vase and flowers are very small, and weigh in at five land impact.  They have a resizer, but I know the land impact will go up if I resize them, and as object limits are tight at my place, I’ve shelved them for the moment.  They may eventually find a place in my house at their original small size.

But the real story here is orange trees!  While walking out of CJ Creations store, I noticed these orange trees in planters.  Before the greenhouse, I had an orangery, which I made in Blender as one of my first 3d modeling projects.  Having an orangery calls for orange trees, and back then I found some and made planters for them, and things looked nice.  But!  How I wish these had been available back then!

The  trees come in three different color pots, and you even get a lazy (static) Siamese cat as a bonus (not shown).  The orange trees are four land impact and the pack of three (and the cat) are L$249 at the store.

P.S. My greenhouse is open to the public.  You’re more than welcome to come and visit.


What lies beyond the dark?

Hallowe’en is a Big Thing™ in Second Life.  Creators go nuts with outfits and usually this time of the year, you can’t find a single freebie that’s not Hallowe’en related.  So, I’ve spent my time on building a spooky setting for Eden‘s big party this year.

That’s what’s behind the dark entrance way here!

Save the date: Saturday 28th October at 2pm SLT!


Second Life is not for everyone

Do I want to post this?  I sort of can’t resist because sometimes people make you laugh, and not because they’re funny.

Generally at night my time, when I’m getting dinner and relaxing before bed, I’ll log in to SL.  Most of my SL friends are scattered all around the world and it’s unusual for me to find someone I know online at night, so I’ll run to a social place and plonk on a sit and hope for some casual conversation with someone interesting.  But this is SL, and there are some really strange people…

Tonight, a girl IM’d me and complemented me on my looks, and as she was looking fine too, I returned the complement and made a casual joke about tattoo removal being easy in SL.  To each their own however, if you love your tattoos, knock yourself out.

It turns out that this girl had some serious issues, as she’s apparently Maori (although her avi was as white as mine) and took offense when I mentioned her tatts.  Apparently, she dislikes the English (to put it mildly), with one of her picks literally saying “f*ck off back to England”.

The funniest thing was she’d apparently looked in my picks too, and noticed Eden, and ended the conversation by calling it “the most cliquey girls club in SL” before bailing out of the region.  Trying to hand her an apostrophe, I discovered she’d blocked me, with a vulgarly worded block message.  Perhaps she should have read my pick about being the tech girl for Eden… as I log every visitor, and she’d never even been to the club.

As each of her picks ended with “SL = Shit Life”, I wonder what she gets out of Second Life at all…


Late reporting: SLink

In case you missed it, SLink, a major creator in SL for a very long time, closed their doors on the 1st of January, effective immediately.  While I was aware of it at the time, I generally don’t report on events such as this on the blog, but I’ve just realized that every article I post is linking to a now nonexistent region.

Slink made the original replacement for the (horrid) system avatar’s hands and feet.  I wear both on a day-to-day basis, and as such, at least the hands get photographed in every post I do.

So, I will use some magic on the blog and redirect the Slink links to this article so newcomers don’t get confused.  If you ended up here, that’s why.

Details on Siddean’s decision are on Slink’s blog, but as I’m sure that site will disappear in the future, here’s the article quoted directly:

It is with a heavy heart that I am announcing the closure of Slink, One Bad Pixel and Cinnamon&Chai in Second Life.

Second Life has been an all-consuming part of my Real Life since I first joined in 2007. I opened Slink a few weeks after I joined with a single skin, a single t-shirt and a single skirt. Slink has gone from strength to strength since with the release of my first sculptie shoes in 2009, my avatar enhancement hands and feet in 2011/12 which set the SL shoe market ablaze, and then the Physique Original body in early 2014, followed by Hourglass and mens bodies in 2015 and 2016.

I have curated and cultivated a wonderful cottage industry of my fellow Second Life creators and enjoyed a lot of support from them over the years. I’ve also really enjoyed teaching people how to create for Second Life, building in blender, weight painting, troubleshooting etc. I think my desire to assist and enable others to create is what motivated me more than my own creative endeavours.

Following two stressful years of pandemic which I am sure we have all been affected by in one way or the other, I suddenly lost my mother in September of 2021, my grandmother in January of 2022 and my cat Cleo in June. I have been unwell and enduring a lot of chronic pain. I have to be very honest, my spark has dimmed a little and I no longer have the energy to pour into this business like I once did.

I’ve done a lot of soul searching over the last 18 months and have come to the very difficult decision that for my own physical and mental wellbeing, I need to move on from Second Life. I am starting something new, and can only hope it will be half as much fun and as fulfilling as my time in Second Life has been.

For my loyal customers – thank you from the very bottom of my heart for your support over the years, for your engaging and entertaining conversations in our group chat, for your enthusiastic cheerleading for me and the work I do, for whispering in my ear when I made some oopsie, so I could sneak in and fix it! I cannot express what your support has truly meant to me, and I know these words will never be enough. I love you all, and I will miss you so very much.

For my brilliant creator community – you made what I do so much better! Thank you so much for your fabulous, innovative and gorgeous creations that made mine look so awesome. Thank you for jumping on this incredible ride with me!

I never imagined I would do this for even 5 years, let alone 15. I feel a tremendous sense of accomplishment about what I have done over the last 15 years, the impact I have had on the development of Second Life through the various Linden Lab projects I participated in, and opening my very first creators kit which let other SL residents design nailpolishes for my hands and feet. I have learned so much as a business owner, and grown so much as an artist, and I feel ready to embark on my next adventure.

The Slink Mainstore sim and Marketplace store will be closing on the 1st of January, 2023. The Slink and Slinkwest accounts will not be available for contact.


Product updates

TL;DR

I’m releasing a lot of product updates due to a changed workflow.  Skip to the bottom of the article to see which ones.  Most products will see small or no functional changes that won’t effect your use of the product.  If you’re really paying attention, you might see the memory footprints of the objects go down.  Products that have significant functional changes are highlighted and link to articles covering their changes.

What’s going on?

During the time I’ve been creating content for Second Life, I’ve actively tried to make my customers happy by making support a priority.  This means that I’ll drop what I’m doing and come and help you solve whatever problem you’re having, until you’re a happy camper.  This attitude has sometimes left me confused about which script is where and in what object.

Tracking script versions in SL is hard, far harder than it should be.  I should know, I’ve been a software developer for my entire career (although I now run the team instead of actively code) and I track software changes all the time.  SL doesn’t make it easy, there’s not even a supported way to insert a version number into a script!  You have to hand code it, and that previously meant hand coding it in every copy of the script in-world.

So, I’ve decided that I’m going to rigidly standardize my workflow, and I’m going to standardize it around a build system that includes running code through LSL PyOptimizer.

As the optimizer is not part of Firestorm, input (the script) and output all happen on my computer and not in-world.  To save myself copying and pasting the processed script into multiple copies of objects in-world, my in-world scripts now consist of just an #include directive to include the optimizer’s output.  There are two sides to this.

Firstly, I get the benefit of far less confusion over which in-world script I changed to fix your problem.  I can no longer change a script in-world, I have to edit it on my computer and run it through the workflow.  There is only one place the script resides, and it’s right there on my computer in a version controlled repository.

Secondly, you get the benefit of far more memory miserly scripts due to the optimizer.  The less memory used in a region, the faster it’s going to go.

And lastly, there’s a downside (there’s always a downside).  The downside is that it might take me a few more minutes/hours/days to solve a problem if you experience one, because I can’t get instant gratification by editing the script in-world right there in front of you.  I have to run the workflow.  And as that takes my focus off the viewer, I won’t try and fix a problem on the spot like I have in the past.

As you might imagine, after creating for over eight years, I have a lot of script to change over to this new system, and you’d be right.  I’ve been working on it in all my free time in SL since just after the New Year, and I’m happy to say I’ve finally completed the work for all the scripted products I sell.  I won’t mention the dozens and dozens of scripted objects I’ve created that I don’t sell.  They’re next!.

Changed Products

In the next few days, I plan to redeliver the following products to customers that have purchased them in the past (if you can see this article, marketplace and my store vendors have already been updated, so you can request a redelivery, or wait until I send you the update):

Product nameOld VersionNew Version
BF Build PlatformV1.0V1.1
BF Wind ChimesV1.2V1.3
BF Wind SculptV1.1V1.2
BF Globe on StandV1.1V1.2
BF Paper FanV1.0V1.1
BF Simple Skate HUDV1.0V1.1
BF “Swingin’ on the moon” ClockV1.0V1.1
BF Paper LampV1.0V1.1
BF Rain of StarsV1.0V1.1
BF Pose HUDV1.0V1.1
BF Music boxV1.1V1.2
BF Love NoteV1.0V1.1
BF Word ScramblesV1.2V1.3
BF Bird Box DemoX02-031V3.0
BF Bird BoxX02-031V3.0
BF Coffee Tin Bird BoxX02-031V3.0
BF TelescopeV3.10V4.0
BF Carbon Truss TelescopeV1.32V4.0
BF SDSS DisplayV1.22V4.0

The version numbers are listed so you can see if you have the latest delivery.  The new version number is in the description of each box containing the product, and those boxes are no modify, so there should be less confusion as to which box is which version too!

There are a few footnotes to explain things you may find strange in the table.  And if the name is a link, it links to a post explaining exactly what has changed with the product because you might have to change your configuration, or the way you use the product (hopefully for the better!).

Questions?

If you have any questions about any of this, please don’t hesitate to contact me either in-world by IMing me or dropping me a notecard, or you can use the contact form on this website or email my support email address, and I’ll get right back to you.


[1] This version number format is a holdover from days when I used to program in assembler.  I’m not sure how I managed to go a number of years without noticing that it was formatted like this.  A number like V3.0 is far easier for you to understand.
[2] There’s a large jump in the version number here.  Don’t worry, you didn’t miss out on anything!  As the scripts that make up the telescope system are now shared between all three systems, it was getting tedious to maintain multiple version numbers that were in effect, meaningless.  So I decided to jump all three systems to a common version number.

A new home

I’m eight and a half years old in Second Life.  For nearly all those years, I lived in a house that my old partner Aeon built.  We started out with a L$99 loft that I’d bought to be my in-world shop before I met Aeon, but by early 2015, we’d moved into Snug Harbour (yes, Heinlein reference, we’re both fans).

Aeon came up with the concept for the house and built it in Blender as only her second ever Blender project.  I thought to myself “that will give me plenty of time to write the scripts”, but no, Aeon finished it in less than a week, which put the pressure on me to finish the scripting 🙂

I was looking for an exact date and I thought I’d written a blog post when I took down the old loft and put the new house in place, but it turns out it pre-dates the first entry in this blog, so I must be imagining things.  But my first script saves were in early 2015, so that would make it at least seven years in that house!  There are plenty of photos taken  both inside and outside the house on the blog, and I enjoyed it as you do a home, somewhere familiar to hang your hat 🙂

All this is leading to the fact that I bought a new house!  I saw a fab one by Trompe Loeil at this month’s Uber, and it immediately spoke to me.  But would it fit on one of my 32x32m parcels, and leave me enough space for a my trees and the telescope?? Yes!

As you can see (or may have noticed before) I live on a platform in the sky.  This is because I live in a shared residential region, and living in a skybox or on a platform offers you some level of privacy (and it also lets me maintain a park and greenhouse at ground level for other people to enjoy).

The house dimensions are 30x23m which left me with a nice little 9m wide strip to fit my trees and the telescope.

The house itself is spacious with its two levels.  The top floor features two walls to you could move or delete to open the floor space up even more.  The ground floor features a (non-scripted) kitchen that you could also delete if that’s not your style.  I only have a couple of nits, the first being that there is no stair access to the roof.  Considering the stairwell goes to that level too.

Another issue is the moveable walls on the top level.  For some reason, they have an invisible mesh plane at the bottom of them.  On the one next to the stairs, the plane pokes into the stairwell and you collide with it on the way up and down.  Thinking outside the box for this one, I turned the wall upside down, which put the plane in the ceiling out of the way 🙂

Trompe Loeil uses a modular script system for house control.  While it does have an access list allowing people to open doors and use the lights and window blinds, it has no security system to actually keep people out of the house.  It also lacks radio and fireplace control (the fire is controlled by clicking the fireplace), so I’ll replace it with my own.

The house comes in at 74 land impact and costs L$625 at this month’s Uber event.  You’ll need to hurry if you want to grab it as Uber closes in two days.

House: Cilje Modern Ranch by Trompe Loeil available at this month’s Uber event


Tentacled caching

If you have no interest in the technical side of Second Life, feel free to skip this article.

I run Squid to cache textures, mesh, and other assets that the Second Life servers asks the viewer to fetch to render regions and avatars.  You can read all about using Squid with Second Life via Firestorm’s website.  It’s quite a lot of technical work to set up, and I wouldn’t recommend the casual SL user attempt it.  However, if you have the spare computer resources and know what you’re doing, it can speed up rendering of frequently visited regions tremendously, and save on bandwidth too.

As I’m a software geek, I have an engineering mindset, and let me tell you, we engineers love to measure things.  So once Squid is set up, you can use something like Calamaris to measure the performance of the external cache.  Here’s a screen shot of my performance statistics for just over a week.

I’ve highlighted the interesting numbers in yellow.  I did 567764 requests (asking SL to send me a texture or a mesh, etc) and of those, I found 373864 assets already in my cache, giving me a “Request hit rate” of 373864 * 100 / 567764 ~= 65%, which is pretty good!

Even better are my bandwidth savings.  Without Squid doing its thing, I would have loaded nearly 14.5 gigabytes of assets.  As it was, I loaded less than 2 gigabytes, saving me over 12.5 gigabytes of download.  I saved 87% of my bandwidth requirements!  And Squid estimated my “browsing” performance improvements were a 671% speedup.  That’s pretty cool!

I said “even better” at the start of the last paragraph, but saving bandwidth is exactly what I’m tuning for.

There are a lot of knobs and switches in the Squid configuration file.  Depending on which cache replacement policy you choose, you’ll get either more cache hits or more bandwidth savings.  I’d rather have large assets like mesh instantly load and then perhaps take a little longer to texture.  You can achieve this by tweaking the cache settings after seeing what the cache performance does on average.  That’s why I said at the start that you have to know what you’re doing 🙂


Persistent storage!?!?

No interest in scripting?  You might like to skip this article 🙂

For those of you who have done any advanced programming in LSL, you’ll know that one of the big things missing from the language is that there is no persistent storage mechanism.  For example, you can read a notecard, but you cannot write one from script, so there is no way to store information that will survive a script reset unless you resort to using an external database via http (or other depreciated) functions.

All that might be about to change, as Rider Linden has just created a wiki page called LSL Linkset Data, in which he describes a set of LSL functions for writing, reading, and deleting up to 64K of key/values pairs associated with a linkset.  The memory to support this is not associated with any script memory, so it will survive script resets.  It will also survive object copy and the transfer of the object to a new owner!

This is very exciting news!  Using http to talk to a script on a webserver is slow, and programming it is cumbersome and difficult to debug.  This new functionality is something we scripters have been dreaming of for years.  Let’s hope it’s not just a proposal but the real deal!