LSL Developer Hiring Guide

Hiring Guide for LSL Engineers

Ask the right questions to secure the right LSL talent among an increasingly shrinking pool of talent.

LSL (Linden Scripting Language) is a Turing-complete, high-level, imperative programming language designed for use with the Second Life virtual world platform. Developed by Linden Lab in 2003, LSL is used to create and modify in-world content such as scripts, animations, and 3D models. LSL is open source and freely available for use by anyone. Sources: * [Linden Scripting Language Documentation](https://wiki.secondlife.com/wiki/Linden_Scripting_Language) * [Linden Scripting Language on Wikipedia](https://en.wikipedia.org/wiki/Linden_Scripting_Language)

First 20 minutes

General LSL knowledge and experience

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

What are the different types of events in LSL?

There are many types of events in LSL, including touch events, collision events, timer events, sensor events, and control events, among others.

Describe the difference between a state and an event in LSL.

A state in LSL is a section of the script that contains event handlers, while an event is a function that is called when a certain action occurs.

How would you create a script in LSL?

To create a script in LSL, you would first need to create a new script in the inventory, then open it and write the code in the script editor.

What are the basic data types in LSL?

The basic data types in LSL are integer, float, string, key, vector, rotation, and list.

How would you define the Linden Scripting Language (LSL)?

LSL is a scripting language that is used in Second Life, an online virtual world. It allows developers to create interactive and dynamic content such as games, simulations, and virtual goods.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What youre looking for early-on

Does the candidate demonstrate a willingness to learn and adapt?

The technology field is constantly evolving, so it's important for a candidate to be open to learning new skills and adapting to changes.

Is the candidate able to work under pressure and meet deadlines?

The ability to work under pressure and meet deadlines is important in a fast-paced development environment.

Does the candidate show good communication skills?

Communication skills are important for understanding project requirements and collaborating with team members.

Can the candidate solve complex problems?

Problem-solving skills are important in any development role, as they will often need to find solutions to coding issues.

Does the candidate have experience with virtual world platforms like Second Life?

Experience with platforms like Second Life is crucial as LSL is primarily used in such environments.

Has the candidate demonstrated a strong understanding of Linden Scripting Language (LSL)?

This is essential as the job requires the candidate to write and debug scripts in LSL.

Next 20 minutes

Specific LSL development questions

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

What are the different types of operators in LSL?

LSL supports several types of operators, including arithmetic operators, comparison operators, logical operators, bitwise operators, and assignment operators.

How would you handle errors in LSL?

Error handling in LSL is typically done using the llOwnerSay function to output error messages to the owner of the script.

Describe the difference between a global variable and a local variable in LSL.

A global variable in LSL is declared outside any state or function and can be accessed from anywhere in the script, while a local variable is declared inside a function and can only be accessed within that function.

What are the different types of loops in LSL?

LSL supports three types of loops: for loops, while loops, and do-while loops.

How would you use the llSay function in LSL?

The llSay function is used to make an object say something. The syntax is llSay(integer channel, string message), where channel is the communication channel and message is the text to be said.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

The ideal back-end app developer

What you’re looking to see on the LSL engineer at this point.

At this point, a skilled LSL engineer should have demonstrated strong problem-solving abilities, proficiency in LSL scripting, and good communication skills. Red flags would include difficulty explaining complex concepts or inability to provide clear examples of previous work with LSL scripting.

Digging deeper

Code questions

These will help you see the candidate's real-world development capabilities with LSL.

What does this simple LSL script do?

default { touch_start(integer total_number) { llSay(0, "Hello, Avatar!"); } }

This script says 'Hello, Avatar!' when the object it's attached to is touched.

What is the output of this LSL code snippet?

integer x = 10; integer y = 20; default { state_entry() { llSay(0, (string)x + (string)y); } }

The output will be '1020'. The script concatenates the string representations of the integers x and y.

What does this LSL script do with the list?

list myList = ["apple", "banana", "cherry"]; default { state_entry() { integer len = llGetListLength(myList); llSay(0, (string)len); } }

This script counts the number of elements in the list 'myList' and says the count. The output will be '3'.

What does this LSL script do related to concurrency?

default { touch_start(integer total_number) { llSetTimerEvent(5.0); } timer() { llSay(0, "5 seconds have passed!"); llSetTimerEvent(0.0); } }

This script sets a timer to trigger every 5 seconds when the object is touched. When the timer triggers, it says '5 seconds have passed!' and then stops the timer.

What does this LSL script do related to class object?

key owner; default { state_entry() { owner = llGetOwner(); } touch_start(integer total_number) { if (llDetectedKey(0) == owner) { llSay(0, "Hello, owner!"); } } }

This script stores the owner's key when the script starts. When the object is touched, it checks if the toucher is the owner. If so, it says 'Hello, owner!'.

What will be the output of this advanced LSL code?

default { state_entry() { llSay(0, llGetSubString("Hello, Avatar!", 0, 4)); } }

The output will be 'Hello'. The script extracts a substring from the string 'Hello, Avatar!', starting at index 0 and ending at index 4.

Wrap-up questions

Final candidate for LSL role questions

The final few interview questions for a LSL candidate should typically focus on a combination of technical skills, personal goals, growth potential, team dynamics, and company culture.

How would you use the llListen function in LSL?

The llListen function is used to listen for chat messages on a specified channel. The syntax is llListen(integer channel, string name, key id, string message), where channel is the communication channel, name is the name of the sender, id is the key of the sender, and message is the text to listen for.

Describe the difference between the llGetPos and llSetPos functions in LSL.

The llGetPos function in LSL is used to get the current position of an object, while the llSetPos function is used to set the position of an object.

What are the different types of control events in LSL?

Control events in LSL include forward, backward, left, right, up, down, left rotate, right rotate, jump, crouch, and others.

How would you use the llSetPos function in LSL?

The llSetPos function is used to set the position of an object. The syntax is llSetPos(vector position), where position is the new position of the object.

Describe the difference between the llSensor and llSensorRepeat functions in LSL.

The llSensor function in LSL triggers a sensor event once, while the llSensorRepeat function triggers a sensor event repeatedly at specified intervals.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

LSL application related

Product Perfect's LSL development capabilities

Beyond hiring for your LSL engineering team, you may be in the market for additional help. Product Perfect provides seasoned expertise in LSL projects, and can engage in multiple capacities.