Jump to content

Scripting and Rusty Nails History


Recommended Posts

In the LabVIEW community a phrase that has been used to describe undocumented, or incomplete features of LabVIEW has at times been called Rusty Nails.  In searching LAVA it appear this is never explained and so this post is intended to give a brief history with as many details as I know having not been active when this all took place.

The earliest reference to "Rusty Nails" found online (thanks to AQ) is by Greg McKaskle of NI in 1999.  Someone was asking about all the undocumented INI settings that could be found, and how some weren't exposed to the Tools >> Options dialog.  Greg's reply was this:


As mentioned, most of these configuration options are available from within the Preference dialog. There are also configuration options that aren't in that list because they are needed so early in LV's launch that the resources aren't open yet; so this isn't the complete list. The options that aren't in the preferences dialog are generally considered to be not useful or even harmful. They are sometimes there to allow us a backdoor or a workaround for when we change a behavior. They are also used to turn on obscure development features that we, the LV developers, use to make or debug LV. These obscure features are typically kind of like the attic or basement of a house, not finished out, not very interesting, and potentially harmful.

We have never tried to hide any of these strings, and I don't believe you will gain any benefit from trying out various combinations of the settings. If you ask technical support what a setting is, they will likely tell you that they have no idea. They are telling you the truth. I don't even know what some of them do without checking the code. Others, such as exoticcontrols, no longer do anything. It was once used to show a control palette submenu that contained controls that were still in work and not ready for prime-time. They were experiments, unsupported features, and guaranteed to crash if you did much with them. Just the sort of thing that we need for development, but not useful to even advanced LV users unless they have a death-wish.

If you experiment with the .ini file and you crash mysteriously losing hours of work, I'd suggest putting the file back to the way LV left it. Don't ask tech support to fix it or complain that the LV attic has rusty nails and splinters.

As for whether or not Resedit is wonderful, I personally prefer Resorcerer, but that is a different story. It is a low level tool that in the right hands is useful, in the wrong hands, well, its in the wrong hands. For the person that likes taking a multimeter and a soldering iron to computers and household appliances, its exactly what you always wanted. If you start monkeying with things in the resources or the .ini file, use common sense and do it on a copy or you will just end up reinstalling LV.

Once the fun and experimentation is over with, I think you will agree that the useful options, with very few exceptions are in the Preference dialog.

Back in the LabVIEW 5.x and 6.x era there was a new emerging technology that was LabVIEW Scripting.  NI had created scripting for their own purposes but the community saw it and wanted to be able to automate editing, or creating LabVIEW code.  With the help from Jim Kring and others, the basic tools for enabling scripting in LabVIEW were available.  The story of how this came about is worth a post of its own, but the summary is that NI shipped a VI that didn't have a password on the block diagram, which allowed for the creation of any object, given an ID.  Using a for loop, you could easily create every object in LabVIEW, including objects which facilitate in creating and manipulating code. Discussing scripting often leads into discussing other INI keys which enable private functions like the well known SuperSecretPrivateSpecialStuff.  It is possible this is one of the keys Greg was referring to.  Other INI keys from 5.x can be found here.

After these discoveries the NI forums started getting users asking about scripting, and private functions.  Users were looking for help, and documentation but NI wasn't ready for this knowledge to be public and so they started deleting all posts related to private, and scripting functionality.  Some of the motivation for the creation of LAVAG came about by a desire to have an independent place to discuss the LabVIEW topics that NI didn't want to have on the public forums, potentially adding to the number of support calls, and confusing new users with advanced topics that were undocumented or incomplete.

After LAVA's creation a subforum section was labeled Rusty Nails, and intended to be a place to discuss Scripting, ExternalNodes, XNodes, Private methods, and general LabVIEW hackery.  Over the years several private functions have been made public, and scripting has become an official feature shipping with LabVIEW.  Because of this the Rusty Nails and XNodes subforums were combined into what is now the VI Scripting section.  Even over on the official NI forums, discussions about private functionality and XNodes has been relaxed since those early days.  Asking for private methods and getting unofficial help is something users, and sometimes NI employees will participate in, without the heavy censorship seen earlier.  And topics of scripting are encouraged now that the feature has been official since LabVIEW 8.6.

If you have anything you'd like me to add regarding scripting's history feel free to reply and I can add it.  And if I got any of the details wrong let me know.  Again I wasn't around when this all took place and I've just tried putting down the details I've heard from other developers.

  • Like 2
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...

Important Information

By using this site, you agree to our Terms of Use.