<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Num+Skall</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Num+Skall"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Num_Skall"/>
	<updated>2026-07-28T03:12:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:LlGetFreeMemory&amp;diff=24591</id>
		<title>Talk:LlGetFreeMemory</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:LlGetFreeMemory&amp;diff=24591"/>
		<updated>2007-06-28T22:54:04Z</updated>

		<summary type="html">&lt;p&gt;Num Skall: New page: --~~~~ Each script is presently allocated a 16K page of memory which contains the LSO bytecode, heap and stack. This function returns the difference between the current stack pointer and t...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[User:Num Skall|Num Skall]] 15:54, 28 June 2007 (PDT) Each script is presently allocated a 16K page of memory which contains the LSO bytecode, heap and stack. This function returns the difference between the current stack pointer and the heap&#039;s high-water mark. If the heap is exhausted, the stack and heap will collide and the &#039;&#039;&#039;script will crash&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If one is running low on memory, consider splitting the script into two parts or attempt to simplify the code. This includes strings as well (&#039;&#039;War and Peace&#039;&#039; should probably be placed in a notecard and not a string constant). Remember that every byte saved in code gives you one more for the heap and stack.&lt;/div&gt;</summary>
		<author><name>Num Skall</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Switch_Statement&amp;diff=17594</id>
		<title>LSL Switch Statement</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Switch_Statement&amp;diff=17594"/>
		<updated>2007-04-20T19:18:04Z</updated>

		<summary type="html">&lt;p&gt;Num Skall: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This article is a feature request&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ability to use something like the following:&lt;br /&gt;
&lt;br /&gt;
 Switch (&#039;&#039;variable&#039;&#039;) &lt;br /&gt;
     case &#039;&#039;condition 1&#039;&#039;:&lt;br /&gt;
         Do something;&lt;br /&gt;
         break;&lt;br /&gt;
     case &#039;&#039;condition 2&#039;&#039;:&lt;br /&gt;
         Do something;&lt;br /&gt;
     default:&lt;br /&gt;
         Do something;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Isn&#039;t LSL all server-side? I don&#039;t think this can be implemented in the client. - [[User:Ihavegot Wood|Ihavegot Wood]]&lt;br /&gt;
:LSL is run on the server yes, but the compiler is in the client. LSO wasn&#039;t designed with switch statements in mind so some changes to the VM would be required, just wait for Mono. [[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
&lt;br /&gt;
This is not entirely accurate ... LSO has branch instructions (aka GOTO) which is all that is needed to implement &#039;&#039;switch&#039;&#039; constructs and the &#039;&#039;break&#039;&#039; and &#039;&#039;continue&#039;&#039; statements. Basically, it&#039;s just an issue of adding these statements to the compiler and ensuring the code generator emits the proper LSO instructions. Besides updating the grammar itself, I&#039;d personally like to see the use of ANTLR (see [http://www.antlr.org]) over the current Flex/Yacc/Bison implementation. Provided that LL isn&#039;t already in the process of implementing this, I would not be adverse to doing so myself. --[[User:Num Skall|Num Skall]] 12:07, 18 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
:The issue is that LSL is a stack based language, the act of doing a conditional jump pops the condition off the stack, unless something special was done for switch statements there would be no performance improvement over complex conditional structures. If you are willing to write the code to implement this, the LSL compiler is open source. Of course when the LSL is ported to Mono we won&#039;t have to use LSL to write scripts for SL. I&#039;m still trying to decide if I&#039;m going to use Managed C++ or C#. Either way I get switch statements without LL having to do anything. -- [[User:Strife Onizuka|Strife Onizuka]] 18:51, 18 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
:So? The issue isn&#039;t performance improvement but, rather, simplicity and readability of the LSL code. As for LSO being stack based, that&#039;s also a non-issue. My current projects are exactly like that too. Besides, having &#039;&#039;break&#039;&#039; and &#039;&#039;continue&#039;&#039; statements are the real benefit here. Think of how that would improve looping constructs. Properly done, the resulting object code efficiency will be the same. I&#039;ll get the source installed and see just how much is going to be involved. The first step will be converting to use of ANTLR to get the benefits of a full LRL rescursive-decent parser (makes code generation from the parse tree oh so much easier). It also generates the Lexical Analyzer from the same grammar file. Win-win. -- [[User:Num Skall|Num Skall]] 12:18, 20 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Num Skall</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Web_Textures&amp;diff=17491</id>
		<title>Talk:Web Textures</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Web_Textures&amp;diff=17491"/>
		<updated>2007-04-18T20:21:59Z</updated>

		<summary type="html">&lt;p&gt;Num Skall: Literature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Open Source Talk Page}}&lt;br /&gt;
&lt;br /&gt;
Argent,  Lets try to keep these article-like, rather than discussion-like.  I integrated your comments.&lt;br /&gt;
&lt;br /&gt;
On the white/black list pros and cons, instead of commenting on them, put a subpoint under them to say what would mitigate that con, or just take the con out if you think it&#039;s completely bogus.  [[User:Gigs Taggart|Gigs Taggart]] 09:54, 26 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
Done -- [[User:Argent Stonecutter|Argent Stonecutter]] 12:18, 26 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
Gigs, the discussion of privacy concerns needs to be in a separate section. [[User:Argent Stonecutter|Argent Stonecutter]] 06:42, 31 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Making page moves ==&lt;br /&gt;
&lt;br /&gt;
Please make a request to make a page move rather than making moves by cutting/pasting (just request on [[User talk:Rob Linden]] for now...we&#039;ll come up with a more streamlined process later).  It&#039;s really a pain to merge histories after a cut/paste/redirect move, and much simpler to move the history/discussion and everything in one move.  Thanks -- [[User:Rob Linden|Rob Linden]] 10:40, 26 January 2007 (PST)&lt;br /&gt;
:Turns out there is a move tab I overlooked.  I&#039;ll use that from now on. [[User:Gigs Taggart|Gigs Taggart]] 11:37, 26 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
If a professional can&#039;t type in an IP address and port number, they aren&#039;t very much of a professional. [[User:Gigs Taggart|Gigs Taggart]] 16:51, 26 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
have you ever used an anonymizing proxy chain? -- [[User:Argent Stonecutter|Argent Stonecutter]] 13:38, 28 January 2007 (PST)&lt;br /&gt;
== Streaming Media ==&lt;br /&gt;
Streaming music is not specific to the &amp;quot;Do Nothing - Just Implement It&amp;quot; section. I&#039;ve restored that section. Comments about the relationship between streaming media and texture bugs need to be outside any specific section. Here&#039;s my thoughts on it:&lt;br /&gt;
&lt;br /&gt;
Yes, streaming media is an issue. There have been scares in the past over streaming media, and for that I&#039;ve been on the side of &amp;quot;don&#039;t worry about it&amp;quot;. Why?&lt;br /&gt;
&lt;br /&gt;
Streaming media differs from texture bugs:&lt;br /&gt;
* A significant number of people do not use streaming media in SL because:&lt;br /&gt;
** The overhead of streaming media has an impact on performance.&lt;br /&gt;
** A lot of people have really bad music on their land.&lt;br /&gt;
* Streaming music is limited to one parcel. Texture bugs can be anywhere.&lt;br /&gt;
* The bandwidth costs of any large streaming-media-based collection scheme are significant.&lt;br /&gt;
&lt;br /&gt;
The result is that it&#039;s a far less significant exposure: fewer people are impacted, and even for those people you can only collect data in a small number of places. -- [[User:Argent Stonecutter|Argent Stonecutter]] 13:49, 28 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
::Sorry, I undid some of your changes before I saw this.  I reorganized the article some to reflect this suggestion.  [[User:Gigs Taggart|Gigs Taggart]] 12:00, 29 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== With regards to LSL Implementation ==&lt;br /&gt;
&lt;br /&gt;
Implementation could be simplified thusly:&lt;br /&gt;
Instead of the original code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llSetTextureURL(integer face, string url);&lt;br /&gt;
llRefreshTextureURL(integer face);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llSetTextureURL(1, llUrlEncode(&amp;quot;http://example.com/getpng.php?text= &amp;quot; + text + &amp;quot;&amp;amp;font=futura&amp;amp;rez=512x512&amp;quot;);&lt;br /&gt;
llRefreshTextureURL(integer face);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can make use of llSetTexture()&#039;s ability to be supplied with either a string OR a key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:140%&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
llSetTexture(&amp;quot;http://example.com/example.png&amp;quot;,ALL_SIDES);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the LSL/Mono VM first checks if the variable supplied for the texture name is in the object&#039;s contents, after checking if it&#039;s a UUID, the VM would check if it&#039;s a valid URL.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I like that idea. This could also be applied to llRenderHTML and llRenderText in [[Programmatic Textures]] by allowing the string to be well-formatted XML or the name of a notecard in the objet&#039;s inventory&#039;&#039; -- [[User:Argent Stonecutter|Argent Stonecutter]] 06:31, 31 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
An alternate method, if Linden Lab were to host/cache the images so the Asset system information could be used to enable Copyright owners to stop content from being used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:140%&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
llSetTexture(llExternalAsset(&amp;quot;http://example.com/example.png&amp;quot;),ALL_SIDES);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llExternalAsset() would take any valid URI, and return a UUID that could be used with the appropriate existing LSL function. Any header information found in the file can be applied to the Asset system, so if a web page/image/sound/animation/etc. had creator/author/producer/developer attributes attached to it, the Asset Server will store that information, so it will be displayed in the UI (as opposed to the uploader of content in the current fashion). This would also give copyright holders an avenue to pursue DMCA claims, as the hypothetical system would indicate that they are owner, making things easier except for cases whereby the less scrupulous Resident did something like run an image through the GD libraries to strip out the metadata.&lt;br /&gt;
&lt;br /&gt;
The llExternalAsset() implementation would also benefit greatly from caching, for two reasons:&lt;br /&gt;
# You&#039;d obviously not want a new asset to be created every time the script was restarted.&lt;br /&gt;
# Lots of people might use the same resource, and&lt;br /&gt;
## this would help lower the amount of duplicate information being stored&lt;br /&gt;
## this would speed up subsequent queries&lt;br /&gt;
### In cases where the Asset Server indicates that the external asset already exists in the system, it&#039;ll have the option of attempting to receive a HTTP 304 header from the external source, or&lt;br /&gt;
### If one location for the asset is bogged down, the current simulator&#039;s local asset server can make the call and supply that image to the local simulator.&lt;br /&gt;
###* In this instance, after the local simulator re-downloaded the texture, binary comparison would have to be executed, and if the local sim&#039;s texture is different to the other sim&#039;s textures, then the other sim&#039;s asset servers would replace the old asset with the freshly downloaded one.&lt;br /&gt;
&lt;br /&gt;
[[User:SignpostMarv Martin|SignpostMarv Martin]] 07:20, 29 January 2007 (PST)&lt;br /&gt;
::Creating assets for every frame of dyanmic content isn&#039;t really even an option. A web cam might be streaming 5 images a second through this.  You are assuming that this would be for static images.  That defeats the entire point of it.  They can just upload the image if it&#039;s static.  This is not some &amp;quot;save 10L on the upload fee&amp;quot; gimmick, the entire point of this is scriptable dynamic content. [[User:Gigs Taggart|Gigs Taggart]] 11:54, 29 January 2007 (PST)&lt;br /&gt;
:::Yeah, but someone streaming a webcam would be better off using the parcel media stuff.&lt;br /&gt;
:::Would you be willing to pay for each asset you create with this method ? L$10, L$20, L$30 ?&lt;br /&gt;
:::[[User:SignpostMarv Martin|SignpostMarv Martin]] 12:43, 29 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
::Linden Labs has already ruled out any scripted generation of assets. -- [[User:Argent Stonecutter|Argent Stonecutter]] 06:32, 31 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
::I&#039;ll second Gigs&#039; point; this isn&#039;t about saving a few cents, it is about immediacy of near-live or live content, and as such no client should be seeing cached content, otherwise we&#039;re back to working out how to get multiple residents &#039;see&#039; the same display concurrently (which inho is the reason for needing web xxx on a prim) --[[User:Alison Wheels|Alison Wheels]] 03:53, 28 March 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
:I&#039;d like to avoid conflicts with inventory &amp;amp; urls and adding new functions. Since pipe is an unusable character in inventory names, I suggest it be used at the start of URIs. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;llSetTexture(&amp;quot;|http://www.example.com/example.jp2&amp;quot;, ALL_SIDES);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; [[User:Strife Onizuka|Strife Onizuka]] 11:37, 28 March 2007 (PDT)&lt;br /&gt;
::By not having new functions we remove the complicatsions of what [[llGetTexture]]/[[llGetPrimitiveParams]] should return. But it is probably better to add new functions. [[User:Strife Onizuka|Strife Onizuka]] 21:24, 28 March 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Possible problem with feature ==&lt;br /&gt;
&lt;br /&gt;
The way a image has to be intepreted relies on header data.&lt;br /&gt;
This header data indicates to the viewer/interpreter info like howmuch data is being send, the pixeldepth etc.&lt;br /&gt;
Deliberated corrupted headers could pose new and unpredictable problems.&lt;br /&gt;
Also the threat of hiding executable data inside an image might create new types of threats.&lt;br /&gt;
&lt;br /&gt;
I&#039;d like it if someone with some insight on this issue would describe which implementations of this feature would pose the most risk.--[[User:Vernes Veranes|Vernes Veranes]] 05:59, 28 March 2007 (PDT)&lt;br /&gt;
::You&#039;d be surprised how little data validation the server does on uploaded textures.  This is really not a new issue, the client must handle corrupted and even malicious textures right now, even without web textures. [[User:Gigs Taggart|Gigs Taggart]] 21:19, 10 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
==Texture/Bandwidth Theft==&lt;br /&gt;
One problem with allowing unrestricted access to any (viable) texture on the web is that of using the materials and bandwidth of unsuspecting hosts. One solution is to require that any texture to be used must have, in the same directory or one higher up the parent tree, a text file of a particular name (such as &amp;quot;secondlife.txt&amp;quot;) in much the same way that the &amp;quot;robots.txt&amp;quot; file is used.&lt;br /&gt;
&lt;br /&gt;
Such a file could also contain information restricting what objects can use that texture in the form of a ban or allow list. References could include a UUID along with Owner, Creator, Group, or to get really specific, a particular Role in a Group. Failure to match these rules results in the 404 texture.&lt;br /&gt;
&lt;br /&gt;
: This is a hot linking issue. It&#039;s simply a case of adding an appropriate value into the referrer header. Thus requiring no extra text-files to be added, and making the &amp;quot;bandwidth theft&amp;quot; prevention methods 100% compatible with every existing installation of a hot linking preventing script, whereby the referrers must match a specific URL or domain.&lt;br /&gt;
: [[User:SignpostMarv Martin|SignpostMarv Martin]] 14:15, 10 April 2007 (PDT)&lt;br /&gt;
::This is completely not an issue.  The chance that someone is hosting a power of 2 texture that is a TGA or Jpeg2000 is nil.  You can&#039;t just use random images off the net for a web texture, they will have to be specially crafted for this purpose. [[User:Gigs Taggart|Gigs Taggart]] 21:18, 10 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
&lt;br /&gt;
Another use which springs to mind is that of literature. Presently, providing a magazine, book or other publication in-world requires rendering each &amp;quot;page&amp;quot; into a texture and uploading these individually. I can forsee SL &amp;quot;publishers&amp;quot; using PERL/PHP cgi-bin scripts to convert page-sized chunks of text and/or rendering pages from PDF files. Though issues of copyright are of concern, the benefits to SL residents would be enormous.&lt;br /&gt;
-- [[User:Num Skall|Num Skall]] 13:21, 18 April 2007 (PDT)&lt;/div&gt;</summary>
		<author><name>Num Skall</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Switch_Statement&amp;diff=17487</id>
		<title>LSL Switch Statement</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Switch_Statement&amp;diff=17487"/>
		<updated>2007-04-18T19:07:50Z</updated>

		<summary type="html">&lt;p&gt;Num Skall: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This article is a feature request&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ability to use something like the following:&lt;br /&gt;
&lt;br /&gt;
 Switch (&#039;&#039;variable&#039;&#039;) &lt;br /&gt;
     case &#039;&#039;condition 1&#039;&#039;:&lt;br /&gt;
         Do something;&lt;br /&gt;
         break;&lt;br /&gt;
     case &#039;&#039;condition 2&#039;&#039;:&lt;br /&gt;
         Do something;&lt;br /&gt;
     default:&lt;br /&gt;
         Do something;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Isn&#039;t LSL all server-side? I don&#039;t think this can be implemented in the client. - [[User:Ihavegot Wood|Ihavegot Wood]]&lt;br /&gt;
:LSL is run on the server yes, but the compiler is in the client. LSO wasn&#039;t designed with switch statements in mind so some changes to the VM would be required, just wait for Mono. [[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
&lt;br /&gt;
This is not entirely accurate ... LSO has branch instructions (aka GOTO) which is all that is needed to implement &#039;&#039;switch&#039;&#039; constructs and the &#039;&#039;break&#039;&#039; and &#039;&#039;continue&#039;&#039; statements. Basically, it&#039;s just an issue of adding these statements to the compiler and ensuring the code generator emits the proper LSO instructions. Besides updating the grammar itself, I&#039;d personally like to see the use of ANTLR (see [http://www.antlr.org]) over the current Flex/Yacc/Bison implementation. Provided that LL isn&#039;t already in the process of implementing this, I would not be adverse to doing so myself. --[[User:Num Skall|Num Skall]] 12:07, 18 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Num Skall</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:LSL_Switch_Statement&amp;diff=17472</id>
		<title>Talk:LSL Switch Statement</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:LSL_Switch_Statement&amp;diff=17472"/>
		<updated>2007-04-18T17:41:49Z</updated>

		<summary type="html">&lt;p&gt;Num Skall: It&amp;#039;s do-able&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Speaking from experience, implementing a &#039;&#039;switch&#039;&#039; statement is within the purview of the compiler&#039;s parser and code-generator. To implement such requires only comparison and both conditional and unconditional branching support within the Sim&#039;s interpreter. The same applies to &#039;&#039;break&#039;&#039; and &#039;&#039;continue&#039;&#039; statements as well.&lt;/div&gt;</summary>
		<author><name>Num Skall</name></author>
	</entry>
</feed>