OK, so Second Life dev thread. Thought I'd tell some stories about working there..

I was there from 2006-2008. I worked in two different groups, as an engineer. This was prime Second Life Hysteria time, when the famous Dildo Swarm at an online presentation occurred.
Linden Lab (named after the road their initial offices where, in San Francisco) was on heck of an interesting place to work. Firstly, it was 50% all remote, which back in 2006 was a big thing.
They had several offices, in San Francisco, Seattle, Brighton (UK) and while I was there, they bought a new studio out on the east coast (I think it was NY, but the memory may lie.)
One of the nicest things was that as an employee, you could travel to any office, bill the company, and no one would question it. Each office had a bunch of open desks you could just use if you where in town.
In fact, the travel policy was the best I've ever seen - anyone could go to any conference they wanted, as long as when they returned they wrote a report on cost and value for money - what was learned, whether it was deemed worth it or not.
Because you had to justify your trips, it actually made the travel budget way less than most large companies had.
Unfortunately, this perk went away towards the end of 2008, when LL was trying to prepare for either purchase or IPO, since it's inherently unpredictable.
Linden Lab really was the wild west of developers. Everyone was known by their nickname, not their real name, which was a real issue when you visited actual offices and in person, everyone uses their real name. It was so hard to put nickname to real name.
One of the most unique things about Linden Lab was that it was entirely flat, hierarchically. There was no managers, no directors, just you, your equipment and a massive Jira full of tasks and a huge wiki, and you were expected to get on with it on your own.
On being hired, I remember showing up at the LL offices in San Francisco, and there being a desk, a new laptop, a new monitor and a PC, all in boxes, along with a piece of paper with my email id, a password, and directions to the wiki. That was it.
You were expected to set yourself up completely, set up and install all software required, read the wiki, work out how to get code, build it, and then who you needed to talk to in order to get started.
Everyone starting at Linden Lab at that time was expected to spend at least 3 months in the bug group. Basically, this was where you learned the codebase, going all over the client, server, database etc, fixing bugs all over the place and learning how everything works.
Once you were done with that, you were expected to look around and find a development group working on new features (or expanding old ones) and just find tasks to do and get started. There was little to no management (ostensibly).
There was, of course. A cabal of people who'd been there a while, and who had the political capital to start a new project within the studio, but it was all very unofficial. You were judged purely on your productivity.
Another thing everyone had to do was be the Ops liaison between pure operations and the developers. Everyone did it for two weeks, where when servers went down, you were the first person called to get them back up again.
I remember learning to hate my phones text notification tone during those two weeks, because it would ping at any time of day or night. Luckily, Second Life had some amazing tools to be able to see the state of the entire cloud, what was wrong at any given machine, -
- and what might be wrong with any given Linden Lot running on any given server (sometimes we had up to 8 different lots running on the same machine, if the lot was pretty empty). It did make the job way easier than it might have been.
I ended up staying in the bug group for 8+ months, just because I liked fixing bugs. I also ended up documenting a lot of the paths that messages took through the system - teleporting was like 19 different events happening one after the other.
I mentioned the huge wiki that Linden Lab had - this was because everyone did all documentation through it. But, it's sheer size was also it's problem.
The trouble was that the code had morphed through so many iterations/expansions that there were often several versions of the same text, all subtly different. It was hard to know exactly what the code was meant to be doing because either the docs conflicted or were out of date.
There was no full time librarian at LL to keep this up to date, something I kept pushing for, but it was just not a priority. So I made it my mission to document as much of the critical paths as I could.
I remember for teleport having about 6 things open at once, tracking the back and forth of the messages. C++ (server), C++(Client), C#(external tool), MySQL DB, Python and perl - all sending network messages and writing/reading to/from the DB.
Second Life at that point was creaking with tech debt. It was really messy code wise and just was not designed to scale to the size it currently was. It was both amazing that it had-a testament to both the original design and also to the engineers working on it - but also, well..
It was going to fall over without a large re-write of certain sections of the code. There was so much duct tape and bandaids all over the place, and all the DB access cache's in the world wasn't going to keep it going much longer at the scale it was at.
So Linden was effectively broken up into three sections - bug fixing what was there (and that included bring in fixes/features from external entities, because Linden Open Sourced the Client, which had it's own headaches), new features and design/implementation of Second Life 2.0.
The New Features group got the shaft the most, mainly because QA just constantly complained that all these new features added to their burden. Remember, Linden Lab released new versions of the client / server software monthly, so QA was constantly regression testing everything.
Every new feature added made their job wider and harder, and there was constant tug of war between QA and new features about what should be worked on and what released or not.
There was also a business development group, which is where I ended up. This group worked with outside 3rd parties who wanted to partner with Linden Lab to do joint Second Life ventures.
For example, Samsung wanted to build a Second Life branded phone, with software on it that would show you your region in Second life, from the top down, and give you stats on what was going on, plus chat ability from outside the client.
Now Second Life had a bunch of public facing API's that people could use, and internally Linden Lab was slowly learning how to defend against DOS attacks on those API's, plus what was expensive internally.
E.g. "asking for an online friends list" cost X amount of DB and GPU power, so we didn't want people to be able to do that very often. 10,000 phones all doing that constantly would be Very Bad(tm) for the Second Life back end DB, so we'd need to limit access to that.
My job was to liase with external entities who wanted to do things like this, look at their requirements, work out what API's we already had that could do what they wanted, or design/implement new ones if necessary.
Because of the flat management - no one directing anyone - I had to go and try and persuade people internally to do some work for me, which was always a loser, so I ended up having to do the work myself most of the time.
In the end, when Linden really thought they were going to IPO or be bought, then they started to look internally and saw that their internal processes were no where near what would be required for a public company. So they turned all attention to righting their own ship.
So they decided "no more external partnerships" and closed down the group I was in, letting us all go at the same time. Sad, but understandable.
While I was there, I was exposed to some really startling and clever internal processes. Like "The Love Machine". While it sounds like something that HR would start panicking over, if someone mentioned it, it was a very clever idea.
The Love Machine was an internal website, that allowed you to put in an internal email and a message. That input was then stored in a DB, and an email generated and sent to whomever you had put in with the message.
So, for example, I could put in a message that said "Sending love for Jessica helping me out with my email woes". I'd put in Jessica's email into the webfront end and she'd get an email saying "Jake sent you love because..."
The website you entered your message on would always have a list of the last 50 love messages sent.
But best of all, once a quarter, the company would assign a budget to The Love Machine. Say, $10k.
At that time the DB would say "20k loves have been sent in the last quarter", which would make each love sent worth $0.50. The system would then tally up how many each person had got, assign a $ value to it, and you'd get that as a small bonus in your paycheck.
It was the web equivalent of buying someone a beer for them going above and beyond the call of duty. It was 100% positive, and since all transactions were public, it couldn't be gamed either. And since most of the bonuses were below $200, they weren't taxed, either.
It was a lovely idea, fostering positive communication. People would start sending out emails saying "My group did this!" making way more company wide visibility. And the emails often had a list of people you could cut-n-paste into the love machine, to save time.
Another thing LL did that was unique was include the residents (that's what the customers were called - Residents) in voting on "what new features or bugs got worked on next". While they didn't exactly follow these votes to the letter, they were included in decision making.
There were several internal projects that were attempted while I was there -one was the Marionette pupettering effort ( @qDot was involved in this, I recall.) This was designed to allow users to create their own animations for their avatars using a built in tool in the client.
As I recall, it ended up being cancelled because it was just too hard to get it all right and make it easy to use.
Another thing that did make it out was the ColorMap-As-Deformer tool, which allowed people to create a color texture that would deform a default primitive.
The idea being you could place a sphere primitive in the region, then associate a specific color map to it, and the colors would change where the vertexes were on the sphere, allowing you to easily deform it.
This was a pure skunkworks project, and QA was extremely angry when this just showed up in the client and they didn't know it was coming. It was a huge hit with the residents though, so once there, it wasn't coming out.
Another thing that was completed while I was there was the replacement of the scripting language- LSL. This was originally a parsed language, where the text was broken down into byte values and then stored on the server, and then executed one byte at a time by an internal parser.
This, while fast, was starting to seriously bog down the servers. There were literally almost a billion lines of LSL on the servers, and sometimes these scripts were seriously badly written by the residents.
So, the backend compiler was replaced by one that converted LSL to C#, and then generated assemblies of psuedo assembly language, that we'd run with mono on the back end.
Scripts suddenly ran 400 times faster, and that did run into a few problems with some scripts who used the script run time for their timings. When they suddenly ran 400 times faster, then screwy things might happen.
Generally though, it was an amazing feat, and I wouldn't have personally believed it possible, to convert those scripts into C# they way they were. But the group did it and major Kudos to them.
We should talk a little about the Second Life Economy and it's effects. The first thing I did out of the bug group was go write an international billing system for Second Life. I worked with Peter, who was the guy who basically ran the Second Life economy.
Now, because you could both buy AND sell Linden Dollars on the exchange, - and take money out of your account via a bank ATM, Second Life was a Real World Economy.
However, it had none of the usual levers on it for the economy to be managed. There was no interest rate to be modified, for example. Management of the value of Linden $->real world $ was done purely by affecting the number of linden dollars in the world.
So Linden would buy and sell Linden Dollars to try and keep the real world value level. One guy basically balanced it at all times.
Because we were only balancing it against the US Dollar, that did mean we had currency speculators in there, who would try and sell Linden Dollars in other currencies, to make money. They couldn't affect the economy, but they were there.
The international billing system I wrote - that I don't think ever went live, at least not as I built it - was designed to allow people to buy and sell in other currencies and by other methods than just the us dollar on the exchange.
So someone in France could buy using Francs, the UK could buy via pounds, etc. And someone in Korea could buy via a phone text system, where they would be billed on their phone bill. Lots of different regional billing methods.
Now, of course, with a real economy comes taxation, and this was a huge thorn in the Feds side. They saw how much $ was going through Second Life a day, and they wanted their cut. But they could never work out how to get it.
If you are in France, and you do are 100% based there, the US IRS should never be taxing you. But then, who should? And how do you prove that you are supposed to be taxed by that party?
It went back and forth. Every 3 months, the Fed would come to LL with a new taxation plan, and LL would look at it, point out all the fallacies in their assumptions -things that are just not possible to know - point out how they'd get sued and they'd go back to the drawing board.
We did do things like limit how much $ could be taken out of a Linden $ account per day, but that was more to stop money laundering more than anything. And there was a LOT of that attempted inside of Second Life.
We ended up working with the Secret Service to detect money laundering since those follow patterns of usage we could detect and pass on to them.
One of the things that Linden did, right from the start, was allow users to own their own creations, and be able to sell them and keep the linden $ owned. It was a ballsy move, but a designed on.
The idea was that it protected Linden itself for being liable for copyright violations, copying problems or regional issues (e.g. breaking local region laws, while being fine elsewhere.) If residents are responsible for their own creations, they are legally responsible too.
This has the side effect of people being able to actually create businesses internally, which was entirely a side effect, but a welcome bit of serendipity.
This did raise other issues. Protecting against internal copying was something that was a constant arms race between Linden and the Residents. Linden would do one thing - add a unique id to a field in the model format, and then it would be reverse engineered and broken.
But this also had the effect of people making serious $ inside of Second Life. We had a few millionaires - the famous dildo rain happened at an interview with one of these 'property millionaires', and was orchestrated by The Goons from the SomethingAwful forums, IIRC.
The thing is though, while these millionaires existed inside of Second Life, it's not like the money was transferable easily. We limited withdrawals to like $400 a day, so transferring $1m linden dollars out would take months.
So Second Life did also have it's seamier side. There were plenty of people - men and women - making side $ doing sex talk and lap dances inside. I remember the first time, as a Linden, I encountered this.
All Lindens had the surname "Linden", which was a restricted name so we were all identifiable to residents. I was working on something in the client where I needed other logged in residents around me, so I looked on the map and teleported to where there were lots of people.
It turned out to be a lap dancing / sex club. OK then. As a Linden, I was immediately identified and swarmed around and while that was helpful for me testing my client changes, it was really awkward, all these people offering me free dances and stuff.
I did get chatting to one woman who worked there, and she was a hoot to chat to. So honest; it was a fun side thing for her and funded her buying stuff for her online house.
I'm still personally unconvinced by the idea of online sex, but plenty of people seemed to get into it.
Every kind of kink was represented in Second Life, for sure, and I think that's probably a good thing. It's a weird thing, but I think it helped a lot of people cope with isolation in their personal lives.
And we haven't talked about gambling yet.
You can follow @JustJakeSimpson.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: