<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss"><id>tag:blogger.com,1999:blog-32599616</id><updated>2009-07-15T13:38:29.285-05:00</updated><title type="text">Eyes on VIs</title><subtitle type="html">A perspective on VI development from a member of LabVIEW R&amp;D.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default?start-index=26&amp;max-results=25" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>67</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/EyesOnVis" type="application/atom+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">EyesOnVis</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><entry><id>tag:blogger.com,1999:blog-32599616.post-1663037399261070857</id><published>2009-07-03T14:05:00.014-05:00</published><updated>2009-07-04T15:53:05.806-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scripting" /><category scheme="http://www.blogger.com/atom/ns#" term="LVSpeak" /><category scheme="http://www.blogger.com/atom/ns#" term="Quick Edit" /><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW Speak" /><category scheme="http://www.blogger.com/atom/ns#" term="Speech" /><title type="text">LVSpeak: Automating  VI development through speech</title><content type="html">&lt;blockquote&gt;Eyes on VIs is pleased to welcome its first guest blogger, Norm "The Captain" Kirchner! Norm is the first person in history to sacrifice his LabVIEW Champion status for the pleasure of working at National Instruments. (NI Employees cannot be LabVIEW Champions). Norm has been using LabVIEW for over 9 years and he is going to share his "LVSpeak" project, which (I hope you will agree) is pretty darn amazing. Thanks for joining us, Norm!
&lt;br /&gt;
&lt;br /&gt;- Christina&lt;/blockquote&gt;
&lt;br /&gt;&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5CNKirchne%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5CNKirchne%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5CNKirchne%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:.5in; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:.5in; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:.5in; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:.5in; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:1276521000; 	mso-list-type:hybrid; 	mso-list-template-ids:105796370 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l1 	{mso-list-id:1566183393; 	mso-list-type:hybrid; 	mso-list-template-ids:-531870232 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l1:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-.25in; 	font-family:Symbol;} @list l2 	{mso-list-id:1699424645; 	mso-list-type:hybrid; 	mso-list-template-ids:-71791608 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l2:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-.25in; 	font-family:Symbol;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin-top:0in; 	mso-para-margin-right:0in; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;    &lt;p class="MsoNormal"&gt;Imagine if LabVIEW was able to read your thoughts and react to them. You just think “edit icon” and *pop* the icon editor is opened for you immediately. Imagine if every time you wanted to drop a property node for a control or group of controls, they just showed up on the diagram. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Although this ability is not implemented in LabVIEW &lt;u&gt;yet&lt;/u&gt;, we can get darn close by using our voice and a little creative coding.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;LVSpeak (LabVIEW Speak) is a very simple concept with a great deal of possibilities. It utilizes the Microsoft Speech API (SAPI) and provides an open and extendable interface to it within LabVIEW. Currently, two extensions of that architecture exist. They are ‘Quick Edit’ and ‘Speech Enabled Quick Drop’.
&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;These extensions of LVSpeak and the LabVIEW development environment give the coder tools to greatly speed the process of code creation and modification upwards of 70%.&lt;/p&gt;&lt;br&gt;Note: Volume on the videos is very low, turn speakers all the way up&lt;br&gt;  &lt;p class="MsoNormal"&gt;&lt;u&gt;&lt;object width="640" height="480"&gt; &lt;param name="movie" value="http://content.screencast.com/users/NJKirchner/folders/Jing/media/aebdd7ca-0da3-470b-bf59-3243e9183f27/jingswfplayer.swf"&gt; &lt;param name="quality" value="high"&gt; &lt;param name="bgcolor" value="#FFFFFF"&gt; &lt;param name="flashVars" value="thumb=http://content.screencast.com/users/NJKirchner/folders/Jing/media/aebdd7ca-0da3-470b-bf59-3243e9183f27/FirstFrame.jpg&amp;amp;containerwidth=640&amp;amp;containerheight=480&amp;amp;loaderstyle=jing&amp;amp;content=http://content.screencast.com/users/NJKirchner/folders/Jing/media/aebdd7ca-0da3-470b-bf59-3243e9183f27/2009-07-03_1602.swf"&gt; &lt;param name="allowFullScreen" value="true"&gt; &lt;param name="scale" value="showall"&gt; &lt;param name="allowScriptAccess" value="always"&gt; &lt;param name="base" value="http://content.screencast.com/users/NJKirchner/folders/Jing/media/aebdd7ca-0da3-470b-bf59-3243e9183f27/"&gt;  &lt;embed src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/aebdd7ca-0da3-470b-bf59-3243e9183f27/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="thumb=http://content.screencast.com/users/NJKirchner/folders/Jing/media/aebdd7ca-0da3-470b-bf59-3243e9183f27/FirstFrame.jpg&amp;amp;containerwidth=640&amp;amp;containerheight=480&amp;amp;loaderstyle=jing&amp;amp;content=http://content.screencast.com/users/NJKirchner/folders/Jing/media/aebdd7ca-0da3-470b-bf59-3243e9183f27/2009-07-03_1602.swf" allowfullscreen="true" base="http://content.screencast.com/users/NJKirchner/folders/Jing/media/aebdd7ca-0da3-470b-bf59-3243e9183f27/" scale="showall" width="640" height="480"&gt;&lt;/embed&gt; &lt;/object&gt;
&lt;br /&gt;Video 1: Code creation
&lt;br /&gt;
&lt;br /&gt;&lt;/u&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;u&gt;
&lt;br /&gt;&lt;/u&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;u&gt;WHY&lt;/u&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;LabVIEW is an easy to use and intuitive application development environment and programming language, but there are still some basic actions that require multiple clicks and force the user to navigate through a variety menus and options.
&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;LVSpeak was developed to take those minor but time consuming steps and reduce them to a single voice command. At the root of this entire effort is one simple premise, “A good engineer is a lazy engineer”. And until we can program LabVIEW with our minds, turning a 4 step, 3 second action into a ½ second, 1 step voice command, makes me a happy lazy engineer.
&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;At the end of the day, any action that requires you to remove your hand from the mouse (Ctl+I), or needs more than two mouse clicks and navigation deeper than a top level context menu (Label Visible) is warranted to become a Voice Command&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;u&gt;HISTORY&lt;/u&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;When LabVIEW Scripting was still very new in LabVIEW 7.0 and some of it’s functionality was accidentally exposed by NI, it occurred to me that you could combine this scripting ability to use LabVIEW code to write LabVIEW code along with the free Microsoft speech recognition technology and do some creative things.&lt;span style=""&gt;  &lt;/span&gt;Although an interesting idea, integrating dll’s and ActiveX objects into G was still foreign to me and presented a barrier that caused LVSpeak to sit dormant until NI Week 2008 and the release of Quick Drop.&lt;/p&gt;&lt;p class="MsoNormal"&gt; Almost immediately I recognized a synergy between this great new development tool in LabVIEW and the still undeveloped LVSpeak. This was only confirmed further when I was watching the coding challenge at NI Week 08. During the coding speed challenge, the creator of Quick Drop, Darren Nattinger, was slowed to a crawl when doing simple tasks like creating a constant or typing verbose function names in the Quick Drop window.
&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;At that point I realized that all the components needed, to allow the developer to program as fast as they could imagine the code, were in place.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;u&gt;HOW&lt;/u&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The how is actually more simple than I would like to admit.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There are two key components to the Microsoft SAPI that are utilized in LVSpeak&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Grammar List&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;'&lt;/span&gt;&lt;/span&gt;Speech Recognized’ .NET Callback Event&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;p class="MsoNormal"&gt;Within LabVIEW, two components are required to enable speech recognition in any program.&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Load Command List (Grammar)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Register for speech recognized event&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;p class="MsoNormal"&gt;The way everything plays together is quite simple&lt;/p&gt;  &lt;p class="MsoNormal"&gt;LVSpeak Core starts and&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;Initializes the Microsoft SAPI&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;Creates a LV User event&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Registers a callback VI to be run when speech is detected and fire the LV User Event with the command
&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Programs utilizing LVSpeak&lt;/span&gt;
&lt;br /&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Register for the Grammar Detected event&lt;/span&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Load their command list into the “Grammar” &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;Catch the fired event and respond accordingly to the string
&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;!--[if !supportLists]--&gt;            &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;For speech enabled Quick Drop, the grammar list is &lt;u&gt;everything&lt;/u&gt; in the function palette, and whenever the LVSpeak event is caught, it takes the detected string and loads it into the text box as if you had just typed it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Quick Edit follows that same flow. The grammar list is all created Quick Edit commands pulled from an enumeration. When one of those commands is detected, it runs the corresponding code to execute that &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;command.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;
&lt;br /&gt;&lt;object style="font-family: verdana;" width="640" height="480"&gt; &lt;param name="movie" value="http://content.screencast.com/users/NJKirchner/folders/Jing/media/fcf6c099-5c17-4f31-a6b3-0bc672756399/jingswfplayer.swf"&gt; &lt;param name="quality" value="high"&gt; &lt;param name="bgcolor" value="#FFFFFF"&gt; &lt;param name="flashVars" value="thumb=http://content.screencast.com/users/NJKirchner/folders/Jing/media/fcf6c099-5c17-4f31-a6b3-0bc672756399/FirstFrame.jpg&amp;amp;containerwidth=640&amp;amp;containerheight=480&amp;amp;loaderstyle=jing&amp;amp;content=http://content.screencast.com/users/NJKirchner/folders/Jing/media/fcf6c099-5c17-4f31-a6b3-0bc672756399/2009-07-03_1508.swf"&gt; &lt;param name="allowFullScreen" value="true"&gt; &lt;param name="scale" value="showall"&gt; &lt;param name="allowScriptAccess" value="always"&gt; &lt;param name="base" value="http://content.screencast.com/users/NJKirchner/folders/Jing/media/fcf6c099-5c17-4f31-a6b3-0bc672756399/"&gt;  &lt;embed src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/fcf6c099-5c17-4f31-a6b3-0bc672756399/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="thumb=http://content.screencast.com/users/NJKirchner/folders/Jing/media/fcf6c099-5c17-4f31-a6b3-0bc672756399/FirstFrame.jpg&amp;amp;containerwidth=640&amp;amp;containerheight=480&amp;amp;loaderstyle=jing&amp;amp;content=http://content.screencast.com/users/NJKirchner/folders/Jing/media/fcf6c099-5c17-4f31-a6b3-0bc672756399/2009-07-03_1508.swf" allowfullscreen="true" base="http://content.screencast.com/users/NJKirchner/folders/Jing/media/fcf6c099-5c17-4f31-a6b3-0bc672756399/" scale="showall" width="640" height="480"&gt;&lt;/embed&gt; &lt;/object&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Video 2: Basic detection&lt;/span&gt;&lt;span style="font-size:85%;"&gt;
&lt;br /&gt;&lt;object style="font-family: verdana;" width="600" height="600"&gt; &lt;param name="movie" value="http://content.screencast.com/users/NJKirchner/folders/Jing/media/b586b546-fe50-46a7-8cfa-1e3a6c6ead80/jingswfplayer.swf"&gt; &lt;param name="quality" value="high"&gt; &lt;param name="bgcolor" value="#FFFFFF"&gt; &lt;param name="flashVars" value="thumb=http://content.screencast.com/users/NJKirchner/folders/Jing/media/b586b546-fe50-46a7-8cfa-1e3a6c6ead80/FirstFrame.jpg&amp;amp;containerwidth=600&amp;amp;containerheight=600&amp;amp;loaderstyle=jing&amp;amp;content=http://content.screencast.com/users/NJKirchner/folders/Jing/media/b586b546-fe50-46a7-8cfa-1e3a6c6ead80/2009-07-03_1638.swf"&gt; &lt;param name="allowFullScreen" value="true"&gt; &lt;param name="scale" value="showall"&gt; &lt;param name="allowScriptAccess" value="always"&gt; &lt;param name="base" value="http://content.screencast.com/users/NJKirchner/folders/Jing/media/b586b546-fe50-46a7-8cfa-1e3a6c6ead80/"&gt;  &lt;embed src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/b586b546-fe50-46a7-8cfa-1e3a6c6ead80/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="thumb=http://content.screencast.com/users/NJKirchner/folders/Jing/media/b586b546-fe50-46a7-8cfa-1e3a6c6ead80/FirstFrame.jpg&amp;amp;containerwidth=600&amp;amp;containerheight=600&amp;amp;loaderstyle=jing&amp;amp;content=http://content.screencast.com/users/NJKirchner/folders/Jing/media/b586b546-fe50-46a7-8cfa-1e3a6c6ead80/2009-07-03_1638.swf" allowfullscreen="true" base="http://content.screencast.com/users/NJKirchner/folders/Jing/media/b586b546-fe50-46a7-8cfa-1e3a6c6ead80/" scale="showall" width="600" height="600"&gt;&lt;/embed&gt; &lt;/object&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Video 3: Quick Edit Demo&lt;/span&gt;&lt;span style="font-size:85%;"&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;Getting Started&lt;/span&gt;&lt;span style="font-size:85%;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;
&lt;br /&gt;To start developing LabVIEW with your voice you need to download and install
&lt;br /&gt;&lt;/span&gt;&lt;ul  style="font-family:verdana;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://jkisoft.com/"&gt;VI Package Manager (JKISoft.com)&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://tinyurl.com/lzz3t5"&gt;Microsoft Speech SDK 5.1&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; (http://tinyurl.com/lzz3t5)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.eyesonvis.com/shared/lavag_cr_LVSpeak-0.4.1-1.ogp"&gt;LVSpeak Core&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.eyesonvis.com/shared/lavag_cr_LVS_QD-0.5.0-1.ogp"&gt;LVS Quick Drop Addon&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;
&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Once all these parts are installed, you should see a new item in your LabVIEW tools menu "Enable LVSpeak"&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Select that option, and you should see two floating windows show up.&lt;/span&gt;
&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If you microphone is active, manually drop some controls on your front panel, flip over to the block diagram, select all the controls and say "Label Side" in a relatively monotonic voice.&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Summary&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;If you program LabVIEW on a regular basis, begin paying attention to how long some tasks&lt;span style="font-family:verdana;"&gt; take and how often you repeat some basic tasks that could be streamlined by a little scripting automation. &lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Controlling LV with your voice is not just a novel idea. &lt;/span&gt;
&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It is truly a quantum leap forward in how you develop your code and a HUGE performance booster.&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So wipe the dust off of your microphone or headset and get ready to take your development process to the next level.&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;~,~&lt;/span&gt;
&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The Captain Was Here&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Norm Kirchner
&lt;br /&gt;
&lt;br /&gt;PS Thank you Christina for your patience with me getting this out to you and providing a great resource for the rest of us LabVIEW nuts out in the world.
&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-1663037399261070857?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/1663037399261070857/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=1663037399261070857" title="19 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1663037399261070857" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1663037399261070857" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/07/lvspeak-automating-vi-development.html" title="LVSpeak: Automating  VI development through speech" /><author><name>Norm Kirchner ~,~</name><uri>http://www.blogger.com/profile/04428414608094683093</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="00828501640257391261" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-4371735708010961324</id><published>2009-06-28T13:19:00.003-05:00</published><updated>2009-06-28T13:40:35.858-05:00</updated><title type="text">VI Makeover Edition - Customizing a Slider</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BN3_donLgVE/Ske3LFSgkoI/AAAAAAAAANY/94cxbMzxqyY/s1600-h/SliderCustom.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 99px; height: 155px;" src="http://2.bp.blogspot.com/_BN3_donLgVE/Ske3LFSgkoI/AAAAAAAAANY/94cxbMzxqyY/s320/SliderCustom.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5352448083179377282" /&gt;&lt;/a&gt;&lt;br /&gt;In a &lt;a href="http://eyesonvis.blogspot.com/2009/03/vi-makeover-edition-part-1.html"&gt;previous post&lt;/a&gt;, I talked about a VI for an NI Week keynote demo.&lt;br /&gt;&lt;br /&gt;Now I'd like to talk about customizing the slider control for that project.&lt;br /&gt;&lt;br /&gt;You can watch the video on &lt;a href="http://www.eyesonvis.com/main/eyes_on_vis_video_podcast/customizing_labview_control.html"&gt;EyesOnVIs.com&lt;/a&gt; or &lt;a href="http://www.youtube.com/watch?v=qvhGH0TlCqs"&gt;YouTube&lt;/a&gt;, or you can read the text version below.&lt;br /&gt;&lt;br /&gt;When customizing a control, I like to start with the simplest control of the right type, which usually means controls from the Classic palette. For this demo, I customized a Classic Vertical Pointer Slide. Note that the control editor lets you change the appearance of a control, but not its functionality.&lt;br /&gt;&lt;br /&gt;You can edit a control either from the &lt;span style="font-weight:bold;"&gt;Edit&gt;&gt;Customize Control&lt;/span&gt; menu or from the &lt;span style="font-weight:bold;"&gt;Advanced&gt;&gt;Customize&lt;/span&gt; right-click menu.&lt;br /&gt;&lt;br /&gt;This will open the control in the Control Editor. From there, you can customize using the normal right-click options (such as setting the Scale style as I did for this demo) or go into "Customize" mode either by clicking the toolbar button to switch to the tweezer icon or by showing the Parts window from the Window menu.&lt;br /&gt;&lt;br /&gt;You can find the slider thumb by cycling through the Parts and then right-click on it to see the options for changing its image. For this demo, I used a graphic that I created myself in a graphics program, but there are lots of sources for nice, professional images that you could use for your projects. You can find the graphics I made in the &lt;a href="http://www.eyesonvis.com/main/gallery/"&gt;Image Archive&lt;/a&gt; on my website, EyesOnVIs.com.&lt;br /&gt;&lt;br /&gt;After customizing the thumb, I added some free labels for + and - scale markers, made the text big and bold so it would be easily visible on the keynote projector screens, and colored the increment and decrement arrows transparent.&lt;br /&gt;&lt;br /&gt;I hope this inspires you to make your own custom controls and take your LabVIEW UIs to the next level!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-4371735708010961324?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/4371735708010961324/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=4371735708010961324" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/4371735708010961324" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/4371735708010961324" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/06/vi-makeover-edition-customizing-slider.html" title="VI Makeover Edition - Customizing a Slider" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_BN3_donLgVE/Ske3LFSgkoI/AAAAAAAAANY/94cxbMzxqyY/s72-c/SliderCustom.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-1805536765316839989</id><published>2009-05-29T17:56:00.002-05:00</published><updated>2009-05-29T18:28:44.800-05:00</updated><title type="text">LabVIEW Scripting</title><content type="html">If "VIs dynamically constructing new VIs" doesn't sound like the premise of a bad summer movie to you, then you might be interested in the recent &lt;a href="http://decibel.ni.com/content/docs/DOC-4973"&gt;LabVIEW Scripting&lt;/a&gt; post on NI Communities.&lt;br /&gt;&lt;br /&gt;To quote &lt;a href="http://labviewartisan.blogspot.com/2009/05/writing-vis-with-vis.html"&gt;Darren Nattinger&lt;/a&gt; (who has a lot more experience with Scripting than me), "LabVIEW Scripting is an (until today) internal LabVIEW feature that allows you to write VIs that create, modify, and inspect other VIs."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Important note&lt;/span&gt;: "As this is an 'NI Labs' product, NI will not be supporting LabVIEW Scripting through Applications Engineering." That means if you have technical questions, you will need to post them to the API Community instead of going through NI's usual support channels.&lt;br /&gt;&lt;br /&gt;In my experience, Scripting is very difficult to work with, but I am really looking forward to seeing what people will do with it.&lt;a href="http://jkisoft.com/"&gt; JKI &lt;/a&gt;has already announced the &lt;a href="http://decibel.ni.com/content/docs/DOC-4678"&gt;JKI Right-click Framework for LabVIEW&lt;/a&gt;, which will allow end-users to add features to the LabVIEW editor itself. Pretty cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-1805536765316839989?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/1805536765316839989/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=1805536765316839989" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1805536765316839989" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1805536765316839989" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/05/labview-scripting.html" title="LabVIEW Scripting" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-2957124603459322412</id><published>2009-05-07T21:36:00.003-05:00</published><updated>2009-05-07T21:48:29.722-05:00</updated><title type="text">Help Define the New LabVIEW Advanced Course</title><content type="html">Scott Romine and Nancy Hollenback are rewriting the LV Advanced I Course, and they want your help!&lt;br /&gt;&lt;br /&gt;Join the &lt;a href="http://decibel.ni.com/content/groups/designing-drafting-developing-the-lv-advanced-course"&gt;Designing, Drafting, &amp; Developing the LV Advanced Course&lt;/a&gt; group on NI Communities to participate in discussions and polls that will shape the future of the course.&lt;br /&gt;&lt;br /&gt;I've joined the group, and I look forward to hearing everyone's input on what techniques every LabVIEW developer should master!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-2957124603459322412?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/2957124603459322412/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=2957124603459322412" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/2957124603459322412" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/2957124603459322412" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/05/help-define-new-labview-advanced-course.html" title="Help Define the New LabVIEW Advanced Course" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-14071454457140294</id><published>2009-04-03T20:16:00.009-05:00</published><updated>2009-04-05T10:17:52.812-05:00</updated><title type="text">Tree Control Scrollbar Tip</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BN3_donLgVE/Sda_Ro9-kKI/AAAAAAAAAM4/E0ym0wD6xvQ/s1600-h/LabVIEW_tree_control1.jpg"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 280px; height: 189px;" src="http://1.bp.blogspot.com/_BN3_donLgVE/Sda_Ro9-kKI/AAAAAAAAAM4/E0ym0wD6xvQ/s400/LabVIEW_tree_control1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5320650319560872098" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BN3_donLgVE/Sda_RnDCa3I/AAAAAAAAANA/K673bXxTDa0/s1600-h/LabVIEW_tree_control2.jpg"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 280px; height: 189px;" src="http://1.bp.blogspot.com/_BN3_donLgVE/Sda_RnDCa3I/AAAAAAAAANA/K673bXxTDa0/s400/LabVIEW_tree_control2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5320650319045225330" /&gt;&lt;/a&gt;&lt;br /&gt;One of my colleagues recently showed me a VI that automatically shows and hides the scrollbars of the tree control, as well as resizing the columns, depending on the text in the cells. Those of you who are familiar with the tree control are probably aware that it doesn't have this capability built-in.&lt;br /&gt;&lt;br /&gt;The VI isn't in the palettes but is in the &lt;b&gt;tree&lt;/b&gt; folder of vi.lib. It's called &lt;b&gt;Tree_ShowScrollBar.vi&lt;/b&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BN3_donLgVE/SdbAAbqDBEI/AAAAAAAAANI/EWbOKIIee64/s1600-h/LabVIEW_tree_control3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 52px; height: 51px;" src="http://1.bp.blogspot.com/_BN3_donLgVE/SdbAAbqDBEI/AAAAAAAAANI/EWbOKIIee64/s400/LabVIEW_tree_control3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5320651123441468482" /&gt;&lt;/a&gt;&lt;br /&gt;To see a brief demo of the functionality, check out &lt;a href="http://www.eyesonvis.com/main/topic_archive/movie.html"&gt;this video on my website&lt;/a&gt;. If you have trouble viewing that video, you can try &lt;a href="http://www.youtube.com/watch?v=f0B1Zso4-3I"&gt;the YouTube version.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-14071454457140294?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/14071454457140294/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=14071454457140294" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/14071454457140294" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/14071454457140294" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/04/tree-control-scrollbar-tip.html" title="Tree Control Scrollbar Tip" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_BN3_donLgVE/Sda_Ro9-kKI/AAAAAAAAAM4/E0ym0wD6xvQ/s72-c/LabVIEW_tree_control1.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-8826598365446800021</id><published>2009-04-02T20:40:00.010-05:00</published><updated>2009-05-26T07:01:16.463-05:00</updated><title type="text">"Large LabVIEW Application Development" and "UI Interest" Groups</title><content type="html">&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://decibel.ni.com/content/groups/large-labview-application-development"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 267px;" src="http://decibel.ni.com/content/groups/image/1010/1.png?a=5011" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;One of my colleagues, Elijah Kerry, has a group on NI Communities dedicated to "Large LabVIEW Application Development." His recent &lt;a href="http://decibel.ni.com/content/groups/large-labview-application-development/blog/2009/03/23/professional-user-interfaces-in-labview"&gt;blog post on "Professional User Interfaces in LabVIEW"&lt;/a&gt; has links to numerous examples of "the level of customization and flexibility that LabVIEW controls and indicators provide." Please check it out!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://decibel.ni.com/content/groups/ui"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://decibel.ni.com/content/groups/image/1088/1.png?a=5070" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Also, be sure not to miss the &lt;a href="http://decibel.ni.com/content/groups/ui"&gt;UI Interest Group&lt;/a&gt;, which has cool info and examples, including the &lt;a href="http://decibel.ni.com/content/docs/DOC-4028"&gt;"ni.com Inspired Custom Control Suite"&lt;/a&gt; (which Jim Kring has kindly created a VI Package for, so you can easily install it  with the &lt;a href="http://jkisoft.com/vipm"&gt;VI Package Manager&lt;/a&gt;).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Finally, I'd like to send out a personal thank you to Christopher Relf for the &lt;a href="http://decibel.ni.com/content/groups/ui/blog/2009/03/23/an-introduction-to-user-interface-design---creating-an-intuative-ui"&gt;kind comments&lt;/a&gt; about my article in the latest &lt;a href="http://www.ni.com/news/inst_news_q1_09.htm"&gt;Instrumentation Newsletter&lt;/a&gt;, entitled &lt;a ref="http://zone.ni.com/devzone/cda/pub/p/id/686"&gt;&lt;i&gt;Your VIs: Good, Bad, or Ugly?&lt;/i&gt;&lt;/a&gt; The article is available online for anyone who missed it in the mail!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-8826598365446800021?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/8826598365446800021/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=8826598365446800021" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/8826598365446800021" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/8826598365446800021" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/04/large-labview-application-development.html" title="&quot;Large LabVIEW Application Development&quot; and &quot;UI Interest&quot; Groups" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-6623474151551369768</id><published>2009-03-25T20:43:00.008-05:00</published><updated>2009-05-08T16:35:29.395-05:00</updated><title type="text">There Are No Strict Type Definition Constants</title><content type="html">Type definitions (aka typedefs) are very useful. However, they also have some unexpected behaviors that can cause you a lot of trouble.&lt;br /&gt;&lt;br /&gt;As a usability advocate, it pains me every time I have to explain this one, but here it is: There are no strict typedef constants in LabVIEW.&lt;br /&gt;&lt;br /&gt;I am not going to try to defend this as "good" behavior. But it's not a bug when constants linked to strict typedef files only update on type changes.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Basics of Custom Controls&lt;/h3&gt;&lt;br /&gt;LabVIEW has three kinds of custom controls (.ctl files).&lt;ol&gt;&lt;li&gt;&lt;b&gt;Unlinked custom control&lt;/b&gt;. A "regular" custom control uses a definition (.ctl) file but the instances are not linked to the definition file. Thus, when you edit the .ctl file, instances that were created from it in the past do not update.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Linked by type&lt;/b&gt; (aka typedef or type definition). Whenever the definition (.ctl file) changes &lt;em&gt;type&lt;/em&gt;, all instances need to update. If the instance is set to auto-updating, it will update itself on load. [Note, however, that it will not auto-update while the definition file is open in the control editor.] If not set to auto-updating, you must right click on each instance to update it.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Linked by all attributes&lt;/b&gt; (aka strict typedef). Similar to a typedef, except that any time the definition changes, all instances must update. This is achieved by time stamp comparison between the definition and instances. The intent is to have all instances cosmetically identical to the definition. Since most cosmetic attributes are invalid on the block diagram, there is no such thing as a strict typedef constant. &lt;b&gt;Constants linked to strict typedef definitions act like typedef constants.&lt;/b&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Confusion Over When Typedefs Update&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BN3_donLgVE/Scr8Km8BFnI/AAAAAAAAAMo/uWbQpNmyFuE/s1600-h/LabVIEW_ring.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 181px;" src="http://4.bp.blogspot.com/_BN3_donLgVE/Scr8Km8BFnI/AAAAAAAAAMo/uWbQpNmyFuE/s320/LabVIEW_ring.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5317339569245460082" /&gt;&lt;/a&gt;If you have a ring, its type is its numeric representation, e.g. unsigned word. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BN3_donLgVE/Scr8pYpUGsI/AAAAAAAAAMw/VB1XHnpumrs/s1600-h/LabVIEW_enum.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 166px;" src="http://2.bp.blogspot.com/_BN3_donLgVE/Scr8pYpUGsI/AAAAAAAAAMw/VB1XHnpumrs/s400/LabVIEW_enum.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5317340097984862914" /&gt;&lt;/a&gt;If you have an enum (which can look identical on the front panel), its type contains its item names. &lt;br /&gt;&lt;br /&gt;Thus, when you add items to a typedef ring definition file, the instances don't update (because the type didn't change). When you add items to a typedef &lt;b&gt;enum&lt;/b&gt; definition file, the instances &lt;em&gt;do&lt;/em&gt; update. However, if you make a strict typedef ring, then control instances will update when you add items. But since there's no strict typedefs on the diagram, constants that are linked to a strict typedef ring will not update when you add items. This behavior is confusing, but it is working as designed.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Forcing Updates&lt;/h3&gt;&lt;br /&gt;Even though typedefs only update when types change, instances get cosmetic changes from the definition whenever they update. So one trick to "push" changes to typedef instances is to change the data type, apply changes, and then change the data type back. [edit, March 26 - Note that the typedef instances need to be in memory when you use this trick].&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Unreliability of Data&lt;/h3&gt;&lt;br /&gt;Another potential problem with typedefs is that you shouldn't rely on them keeping their data values when they update. LabVIEW will attempt to preserve data. For example, if you have a typedef numeric constant and change its representation, LabVIEW will convert the value. However, there are many cases where LabVIEW will not preserve the values correctly, especially with clusters, so it's a good policy not to rely on the values being preserved. (Or to visit all the typedef instances when you make changes, in order to verify their values).&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Why Use Typedefs?&lt;/h3&gt;&lt;br /&gt;I would be remiss if I didn't make a case for using typedefs despite the potential problems that I've covered here. Typedefs let you change the type of all the instances with a single edit. This is very useful, for example, when you have a set of VIs operating on a cluster and you later realize you need to add or remove items to it. Without using a typedef, you have a lot of broken wires until you visit every VI that passes the cluster in or out of its connector pane. And strict typedefs are extremely valuable for maintaining consistent user interfaces - you can make controls on any number of VIs have the same appearance. &lt;br /&gt;&lt;br /&gt;One final note - if you're using LabVIEW 8.2 or later, and you want to use a typedef so that you can encapsulate data for passing between VIs, then you should consider using a &lt;a href="http://eyesonvis.blogspot.com/2006/08/class-black-box-cluster-typedef.html"&gt;LVClass&lt;/a&gt; instead. You may still choose to use a typedef, but it's good to evaluate, because LVClasses serve the role well and give you a lot of other benefits as well.&lt;br /&gt;&lt;br /&gt;[Please ignore this edit. I'm trying to see if updating an older post makes it show up on my blog mirror on &lt;a href="http://decibel.ni.com/content/people/ChristinaR?view=blogposts"&gt;NI Communities&lt;/a&gt;, without causing ill effects.]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-6623474151551369768?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/6623474151551369768/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=6623474151551369768" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/6623474151551369768" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/6623474151551369768" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/03/there-are-no-strict-type-definition.html" title="There Are No Strict Type Definition Constants" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_BN3_donLgVE/Scr8Km8BFnI/AAAAAAAAAMo/uWbQpNmyFuE/s72-c/LabVIEW_ring.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-632786894360537661</id><published>2009-03-03T19:48:00.006-06:00</published><updated>2009-03-03T20:32:18.837-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="user_interface" /><title type="text">VI Makeover Edition - Part 1</title><content type="html">For a long time, I've been meaning to do a series of posts I call the "VI Makeover Edition" where we take a VI front panel from "drab" to "fab!" :-)&lt;br /&gt;&lt;br /&gt;I helped "spiffy up" a VI for an NI Week keynote demo last year. It is a graphic equalizer powered by LabVIEW MathScript. You can watch the &lt;a href="http://www.ni.com/niweek/2008/keynote/graphic_equalizer_with_multicore.htm"&gt;demo video on ni.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The goal was simply to make the VI look better on the big screen, and make it easier to see the operation of the controls from the back of the room.&lt;br /&gt;&lt;br /&gt;The original VI looked something like this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BN3_donLgVE/Sa3jr05SzhI/AAAAAAAAAMQ/_CCIzai6lyc/s1600-h/MathScriptEqualizerOriginal.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 318px; height: 320px;" src="http://1.bp.blogspot.com/_BN3_donLgVE/Sa3jr05SzhI/AAAAAAAAAMQ/_CCIzai6lyc/s320/MathScriptEqualizerOriginal.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5309149877812514322" /&gt;&lt;/a&gt;&lt;br /&gt;And the final VI looked something like this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BN3_donLgVE/Sa3iyaKkthI/AAAAAAAAAMI/rIxK4aPslbc/s1600-h/MathScript+Equalizer+Demo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 306px; height: 320px;" src="http://1.bp.blogspot.com/_BN3_donLgVE/Sa3iyaKkthI/AAAAAAAAAMI/rIxK4aPslbc/s320/MathScript+Equalizer+Demo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5309148891384690194" /&gt;&lt;/a&gt;&lt;br /&gt;Some of the tips and tricks I plan to cover include:&lt;ul&gt;&lt;li&gt;VI panel wallpaper&lt;/li&gt;&lt;li&gt;Background images and locking&lt;/li&gt;&lt;li&gt;Customizing the parts of a slider control&lt;/li&gt;&lt;li&gt;Adding decorations to controls&lt;/li&gt;&lt;li&gt;Using transparent color&lt;/li&gt;&lt;li&gt;Gradients and graphics&lt;/li&gt;&lt;li&gt;Grouping and alignment&lt;/li&gt;&lt;/ul&gt;If you want me to cover these in a particular order or have questions in advance that I should cover, please let me know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-632786894360537661?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/632786894360537661/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=632786894360537661" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/632786894360537661" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/632786894360537661" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/03/vi-makeover-edition-part-1.html" title="VI Makeover Edition - Part 1" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_BN3_donLgVE/Sa3jr05SzhI/AAAAAAAAAMQ/_CCIzai6lyc/s72-c/MathScriptEqualizerOriginal.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-4400934643680461036</id><published>2009-02-09T16:46:00.002-06:00</published><updated>2009-02-09T16:59:20.345-06:00</updated><title type="text">You're Invited - LabVIEW Beta Program</title><content type="html">I am pleased to announce that NI is calling for participation in the LabVIEW 2009 Beta program!&lt;br /&gt;&lt;br /&gt;Here is more information from the Beta program coordinators:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;You are invited to register for participation in the LabVIEW 2009 Platform beta program. &lt;br /&gt;&lt;br /&gt;You can register by visiting &lt;a href="http://www.ni.com/beta"&gt;http://www.ni.com/beta&lt;/a&gt; and selecting "LabVIEW 2009 Platform" from the list of beta programs.  Please complete the profile questions that will help us understand your experience and use cases with LabVIEW.  Make sure you agree to the T&amp;C of the beta program so that you can be approved.&lt;br /&gt;&lt;br /&gt;After you register, please be patient for the beta coordinators to process your application.  You will be notified when you have been approved. Registration does not necessarily guarantee you a position in the beta program. Determination of acceptance into the program is up to the sole discretion of National Instruments.&lt;br /&gt;&lt;br /&gt;We will have a private section of the Discussion Forums on NI Developer's Exchange set up for beta users to discuss the beta version of the LabVIEW 2009 Platform.&lt;br /&gt;&lt;br /&gt;We eagerly await your registration.  Thank you for your invaluable help in assisting us design and test LabVIEW.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-4400934643680461036?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/4400934643680461036/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=4400934643680461036" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/4400934643680461036" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/4400934643680461036" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/02/youre-invited-labview-beta-program.html" title="You're Invited - LabVIEW Beta Program" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-3091425142127826732</id><published>2009-02-08T10:38:00.002-06:00</published><updated>2009-02-08T10:44:12.453-06:00</updated><title type="text">Tip for iPhone Users</title><content type="html">This past week I learned that I can create links to web pages on my iPhone home screen. I love having quick access to my favorite web sites! Here's the description from &lt;a href="http://www.apple.com/webapps/whatarewebapps.html"&gt;Apple.com&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;When you find a web app you like, you can put it front and center on your Home screen. Just open the web app on your iPhone or iPod touch, tap the plus sign, and then tap “Add to Home screen.” A Web Clip will be added to your Home screen automatically for easy, one-tap access.&lt;/blockquote&gt;&lt;br /&gt;If you add a web clip to Eyes on VIs, you'll get to see the custom icon I made for it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-3091425142127826732?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/3091425142127826732/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=3091425142127826732" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/3091425142127826732" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/3091425142127826732" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/02/tip-for-iphone-users.html" title="Tip for iPhone Users" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-6317609299615497840</id><published>2009-01-28T20:44:00.008-06:00</published><updated>2009-01-28T21:52:06.437-06:00</updated><title type="text">Captions</title><content type="html">Last week I was fixing a problem with a VI where the wrong text was shown in the Context Help window for some of the controls. Perhaps it's a VI you recognize...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BN3_donLgVE/SYEaBFWWVWI/AAAAAAAAALY/SzPN5dMHnhE/s1600-h/Getting+Started+Window.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 264px;" src="http://2.bp.blogspot.com/_BN3_donLgVE/SYEaBFWWVWI/AAAAAAAAALY/SzPN5dMHnhE/s320/Getting+Started+Window.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5296543242682520930" /&gt;&lt;/a&gt;&lt;br /&gt;Yes, embarrassingly enough, it was a bug with my Getting Started window. The small images to the left of some of the links are picture rings. They were showing their decidedly unhelpful labels in the help window:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BN3_donLgVE/SYEalu_KJhI/AAAAAAAAALg/Oq7ZY44NI1k/s1600-h/Context+Help.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 142px; height: 148px;" src="http://4.bp.blogspot.com/_BN3_donLgVE/SYEalu_KJhI/AAAAAAAAALg/Oq7ZY44NI1k/s320/Context+Help.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5296543872334833170" /&gt;&lt;/a&gt;&lt;br /&gt;After deciding that the picture rings should simply have the same names and descriptions as the items to their right, I added a property node to set the caption text and description. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_BN3_donLgVE/SYEb4Uaa9fI/AAAAAAAAALo/9UUV7DVNdOU/s1600-h/Property+Node.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 113px; height: 56px;" src="http://3.bp.blogspot.com/_BN3_donLgVE/SYEb4Uaa9fI/AAAAAAAAALo/9UUV7DVNdOU/s320/Property+Node.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5296545291130566130" /&gt;&lt;/a&gt;&lt;br /&gt;Then I ran the VI. It didn't work. In fact, it fixed the context help for some, but not all, of the picture rings.&lt;br /&gt;&lt;br /&gt;You might already be able to spot what I did wrong. If not, maybe you'll be able to guess after I explain more about captions.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;What Are Captions?&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_BN3_donLgVE/SYEetwaYInI/AAAAAAAAALw/InriUyo3D-g/s1600-h/String.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 111px; height: 51px;" src="http://3.bp.blogspot.com/_BN3_donLgVE/SYEetwaYInI/AAAAAAAAALw/InriUyo3D-g/s320/String.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5296548408202895986" /&gt;&lt;/a&gt;When you place a control on a VI's front panel, it has a label where you give it a name. This name is shown in the context help window. It also provides the identifier for programmatic interfaces such as &lt;span style="font-weight:bold;"&gt;Set Control Value&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;When the LabVIEW team added features to support localization of VIs, we needed to be able to change the name of a control. But if we changed the label, calls to interfaces like &lt;span style="font-weight:bold;"&gt;Set Control Value&lt;/span&gt; would break. So we introduced another kind of label, called a caption.&lt;br /&gt;&lt;br /&gt;We also didn't want to make VIs bigger (in memory and on disk) by adding a part to every control and indicator that most wouldn't use, so captions are "lazily created." When you right-click on a control and select &lt;span style="font-weight:bold;"&gt;Visible Items&gt;Caption&lt;/span&gt;, LabVIEW creates a caption for the control. It also hides the label (since you usually use a caption instead of a label, not in addition to it) which leads to the confusing situation where the menu option appears to have no effect (because the caption initially looks exactly like the label and is in the same location).&lt;br /&gt;&lt;br /&gt;You can tell that a control has a caption by looking at the context help window. When the VI is in edit mode, the context help displays the caption and the label, with the label in square brackets. (Note that when the VI is running, the context help displays the caption but not the label).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BN3_donLgVE/SYEipvToB1I/AAAAAAAAAL4/e523kecoUHg/s1600-h/Caption+Help.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 190px; height: 147px;" src="http://2.bp.blogspot.com/_BN3_donLgVE/SYEipvToB1I/AAAAAAAAAL4/e523kecoUHg/s320/Caption+Help.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5296552737233176402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Fixing the Bug&lt;/h3&gt;Coming back to my original story, when I checked the &lt;span style="font-weight:bold;"&gt;error out&lt;/span&gt; of the property node that was setting the ring caption, I found it was generating error 1320: "In run mode, LabVIEW cannot get or set a property for a control part that has not been created."&lt;br /&gt;&lt;br /&gt;The problem was that some, but not all, of the rings had caption parts. As I mentioned earlier, captions are lazily created - you can't set the text on them if they don't exist, and LabVIEW can't create them on running VIs. The solution was to show (and thus create) the captions for all the rings. Luckily, I was using LabVIEW 8.6 and could use the new multi-select feature. I selected all the rings, right-clicked to show the Properties dialog and showed all their captions in one step. Problem solved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-6317609299615497840?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/6317609299615497840/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=6317609299615497840" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/6317609299615497840" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/6317609299615497840" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/01/captions.html" title="Captions" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_BN3_donLgVE/SYEaBFWWVWI/AAAAAAAAALY/SzPN5dMHnhE/s72-c/Getting+Started+Window.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-1318730308069717447</id><published>2009-01-08T08:36:00.004-06:00</published><updated>2009-01-08T08:58:43.061-06:00</updated><title type="text">Learning LabVIEW</title><content type="html">A LabVIEW user who is aspiring to become a CLAD (&lt;a href="http://sine.ni.com/nips/cds/view/p/lang/en/nid/14438"&gt;Certified LabVIEW Associate Developer&lt;/a&gt;) asked me for book recommendations. I didn't know the answer, but I knew who to ask. My colleague Nitin Thomas, one of our LabVIEW Product Support Engineers, helped me out with the following links, which I think would be helpful to anyone trying to learn LabVIEW: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ni.com/academic/lv_training/how_learn_lv.htm"&gt;How Can I Learn LabVIEW&lt;/a&gt; on NI's Academic site. This page is a great compilation of resources, including courses, webcasts, books and more. &lt;br /&gt;&lt;li&gt;&lt;a href="http://wiki.lavag.org/LabVIEW_Books"&gt;LAVA Wiki book list&lt;/a&gt;&lt;br /&gt;&lt;li&gt;Dr. Scott Hannah's &lt;a href="http://hannahsmac.magnet.fsu.edu/labview/basic_labviewbooks.html"&gt;extensive LabVIEW book list.&lt;/a&gt;&lt;br /&gt;&lt;li&gt;"&lt;a href="http://zone.ni.com/devzone/cda/tut/p/id/4261"&gt;How Can I Prepare&lt;/a&gt;  for the Certified LabVIEW Associate Developer (CLAD) Exam?" on ni.com, including preparation guide and webcast.&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-1318730308069717447?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/1318730308069717447/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=1318730308069717447" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1318730308069717447" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1318730308069717447" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/01/learning-labview.html" title="Learning LabVIEW" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-1587703997413841274</id><published>2009-01-05T15:30:00.000-06:00</published><updated>2009-01-05T15:30:57.783-06:00</updated><title type="text">New Blog from Darren of LabVIEW R&amp;D</title><content type="html">I'm thrilled that Darren Nattinger (of Darren's Weekly Nugget fame), creator of the Quick Drop feature of LabVIEW, has started his own blog: &lt;a href="http://labviewartisan.blogspot.com/"&gt;LabVIEW Artisan&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Darren is one of the top experts in VI development here at NI, and I am looking forward to reading his development tips and ideas for future features!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-1587703997413841274?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/1587703997413841274/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=1587703997413841274" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1587703997413841274" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1587703997413841274" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2009/01/new-blog-from-darren-of-labview-r.html" title="New Blog from Darren of LabVIEW R&amp;D" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-1379993958412939042</id><published>2008-10-25T20:05:00.003-05:00</published><updated>2008-10-25T20:14:55.840-05:00</updated><title type="text">Maker Faire 2008</title><content type="html">Last weekend I visited the Austin &lt;a href="http://makerfaire.com/"&gt;Maker Faire&lt;/a&gt;, a showcase of arts, crafts, and engineering. I saw robots, contraptions, musical Tesla coils and more. Quite an event! And LabVIEW was there, too - I saw a group of children using LEGO Mindstorms NXT at a hands-on exhibit. If you're interested in seeing more, I put together a short &lt;a href="http://www.youtube.com/watch?v=z4Fd3I5HKG8"&gt;YouTube video&lt;/a&gt; of some highlights, including the life-sized Mousetrap (based on the old board game).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-1379993958412939042?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/1379993958412939042/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=1379993958412939042" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1379993958412939042" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1379993958412939042" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/10/maker-faire-2008.html" title="Maker Faire 2008" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-1877869284468563370</id><published>2008-08-27T17:42:00.003-05:00</published><updated>2008-08-27T17:53:12.416-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW 8.6" /><title type="text">Quick Drop</title><content type="html">Quick Drop is a new feature of LabVIEW 8.6. I don't think I can describe it as well as Jim Kring did, so I refer you to his blog post &lt;a href="http://thinkinging.com/2008/08/26/labview-86-quick-drop-is-awesome-and-an-unfair-advantage/"&gt;"Quick Drop is Awesome."&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can also see a &lt;a href="http://zone.ni.com/devzone/cda/tut/p/id/7423"&gt;video&lt;/a&gt; of Quick Drop in action on ni.com.&lt;br /&gt;&lt;br /&gt;Darren Nattinger (of &lt;a href="http://zone.ni.com/devzone/cda/tut/p/id/5720"&gt;Darren's Weekly Nugget&lt;/a&gt; fame) created Quick Drop and is amazingly fast when using it. He has configured keyboard shortcuts that he can type entirely with his left hand. His right hand never leaves the mouse!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-1877869284468563370?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/1877869284468563370/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=1877869284468563370" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1877869284468563370" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1877869284468563370" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/08/quick-drop.html" title="Quick Drop" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-4154969406207465098</id><published>2008-08-11T11:30:00.000-05:00</published><updated>2008-08-11T11:30:00.941-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW 8.6" /><title type="text">Linked Tunnels</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BN3_donLgVE/SJb5tM7IMrI/AAAAAAAAAHE/IEK51tz_bTM/s1600-h/linked_tunnels.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_BN3_donLgVE/SJb5tM7IMrI/AAAAAAAAAHE/IEK51tz_bTM/s400/linked_tunnels.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5230642572196065970" /&gt;&lt;/a&gt;&lt;br /&gt;Linked tunnels are a new feature of LabVIEW 8.6&lt;br /&gt;&lt;br /&gt;Linked tunnels save you from the tedious process of wiring through frames of a case structure when you add new frames or when you add new tunnels to a structure that already has multiple frames. It's easy. Just right-click on an output tunnel and choose an item from the &lt;span style="font-weight:bold;"&gt;Linked Input Tunnel&lt;/span&gt; shortcut menu. You can create the link and wire all the unwired cases, or just create the link. After that, as you create new frames in your case structure, LabVIEW will automatically wire the linked tunnels. This feature also works on event structures.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-4154969406207465098?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/4154969406207465098/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=4154969406207465098" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/4154969406207465098" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/4154969406207465098" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/08/linked-tunnels.html" title="Linked Tunnels" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_BN3_donLgVE/SJb5tM7IMrI/AAAAAAAAAHE/IEK51tz_bTM/s72-c/linked_tunnels.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-1674605608928066459</id><published>2008-08-07T16:05:00.000-05:00</published><updated>2008-08-07T16:06:02.320-05:00</updated><title type="text">NIWeek 2008</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BN3_donLgVE/SJtjR27cuuI/AAAAAAAAAHU/9q5w68Ycghs/s1600-h/NIWeek2008.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_BN3_donLgVE/SJtjR27cuuI/AAAAAAAAAHU/9q5w68Ycghs/s320/NIWeek2008.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5231884550574750434" /&gt;&lt;/a&gt;&lt;br /&gt;NIWeek 2008 is finished and I want to thank everyone who attended. It was a fun and interesting conference. I especially want to thank those of you who told me that you read my blog! It was great to meet you in person! And, yes, I will try to post more often. :-)&lt;br /&gt;&lt;br /&gt;Slightly off-topic... does anyone know of any research in the area of seating fragmentation for large groups of people? I have a hypothesis that we'd get more useful seats in the same space if we left more rows open, even though we'd have fewer chairs. (I can't help pondering this; there's something about the engineering mind that detests inefficiency, even in keynote seating arrangements).&lt;br /&gt;&lt;br /&gt;Speaking of the engineering mind, have you seen the &lt;a href="http://www.youtube.com/user/anengineeringmind"&gt;"An Engineering Mind" videos on YouTube&lt;/a&gt; (that they showed before the NIWeek keynotes). Yeah, I know that guy. :-)&lt;br /&gt;&lt;br /&gt;Safe journey home to all our visiting friends!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-1674605608928066459?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/1674605608928066459/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=1674605608928066459" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1674605608928066459" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1674605608928066459" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/08/niweek-2008.html" title="NIWeek 2008" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_BN3_donLgVE/SJtjR27cuuI/AAAAAAAAAHU/9q5w68Ycghs/s72-c/NIWeek2008.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-1619729561121852147</id><published>2008-08-06T15:10:00.000-05:00</published><updated>2008-08-06T15:11:41.104-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW 8.6" /><title type="text">Breakpoint Manager</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_BN3_donLgVE/SJb8Du2YjuI/AAAAAAAAAHM/-dMU8HzEmdI/s1600-h/BreakpointManager.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_BN3_donLgVE/SJb8Du2YjuI/AAAAAAAAAHM/-dMU8HzEmdI/s400/BreakpointManager.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5230645158283349730" /&gt;&lt;/a&gt;&lt;br /&gt;The new Breakpoint Manager in LabVIEW 8.6 allows you to easily see all the breakpoints you have set on all VIs in memory. To see it, select the &lt;span style="font-weight:bold;"&gt;View&lt;/span&gt; menu and choose &lt;span style="font-weight:bold;"&gt;Breakpoint Manager&lt;/span&gt; or right-click on a wire, structure or node and select &lt;span style="font-weight:bold;"&gt;Breakpoint Manager&lt;/span&gt; from the &lt;span style="font-weight:bold;"&gt;Breakpoint&lt;/span&gt; shortcut menu. From the manager window you can quickly go to the diagram where the breakpoint is set by double-clicking on the breakpoint in the listbox.&lt;br /&gt;&lt;br /&gt;The buttons along the right allow you to enable, disable and remove breakpoints, as well as select all breakpoints.&lt;br /&gt;&lt;br /&gt;The ability to disable breakpoints is another new feature.  This can be very useful when you need to visit breakpoints in a particular order, which can be done by enabling the second breakpoint when you hit the first. Disabled breakpoints are saved with VIs, which means you can also use them like bookmarks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-1619729561121852147?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/1619729561121852147/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=1619729561121852147" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1619729561121852147" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/1619729561121852147" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/08/breakpoint-manager.html" title="Breakpoint Manager" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_BN3_donLgVE/SJb8Du2YjuI/AAAAAAAAAHM/-dMU8HzEmdI/s72-c/BreakpointManager.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-8052647953551056473</id><published>2008-08-05T14:41:00.000-05:00</published><updated>2008-08-05T14:41:26.111-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW 8.6" /><title type="text">Automatic Block Diagram Clean Up, One of the New Features of LabVIEW 8.6</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BN3_donLgVE/SJb3Vt6H9YI/AAAAAAAAAG8/ss-T70xb5nc/s1600-h/BDCleanUp.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_BN3_donLgVE/SJb3Vt6H9YI/AAAAAAAAAG8/ss-T70xb5nc/s400/BDCleanUp.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5230639969710110082" /&gt;&lt;/a&gt;&lt;br /&gt;"Clean up diagram" has changed the way I use LabVIEW.&lt;br /&gt;&lt;br /&gt;After years of learning to keep my diagram tidy as I develop it, I now find that I can concentrate solely on functionality and click a button (or use the ctrl-U keyboard shortcut) whenever things get messy.  LabVIEW rearranges everything: nodes, structures, wires, etc.  I also use it right before I save my VI.  It's fast.  It's easy.  It's really slick.&lt;br /&gt;&lt;br /&gt;Of course, it's not a complete panacea.  So far, I use it only on "leaf-level" subVIs because I often have design patterns in my higher level VIs that I want in a particular layout.  For example, I like having my producer loop above my consumer loop and automatic cleanup sometimes flips them around. &lt;br /&gt;&lt;br /&gt;My one complaint with the first release of this feature is that diagram items that don't participate in data flow get "pushed out" to the edge. That means free labels get pushed to the side instead of staying near the code they comment. This is another reason why I tend to use block diagram cleanup on smaller subVIs, because they're likely to have only a single comment for the whole diagram.&lt;br /&gt;&lt;br /&gt;Here are the questions I anticipate many will ask about this feature:&lt;br /&gt;&lt;br /&gt;Q: &lt;span style="font-weight:bold;"&gt;Is it fast? &lt;/span&gt;&lt;br /&gt;A: Yes, I've been impressed with how quickly it cleans up diagrams.&lt;br /&gt;&lt;br /&gt;Q: &lt;span style="font-weight:bold;"&gt;Can I undo?&lt;/span&gt; &lt;br /&gt;A: Yes. If you don't like the results, you can undo the block diagram cleanup with one Ctrl-Z.&lt;br /&gt;&lt;br /&gt;Q: &lt;span style="font-weight:bold;"&gt;Can I tweak the parameters? &lt;/span&gt;&lt;br /&gt;A: Yes. Look in &lt;span style="font-weight:bold;"&gt;Tools&gt;&gt;Options&lt;/span&gt; under &lt;span style="font-weight:bold;"&gt;Block Diagram: Cleanup&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Q: &lt;span style="font-weight:bold;"&gt;Can I clean up a portion of my diagram automatically?&lt;/span&gt; &lt;br /&gt;A: No. It operates on the entire diagram, not a selection.&lt;br /&gt;&lt;br /&gt;I don't think any description of this feature can really do it justice. I encourage you to get a copy of LabVIEW 8.6 and try it out for yourself!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-8052647953551056473?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/8052647953551056473/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=8052647953551056473" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/8052647953551056473" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/8052647953551056473" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/08/automatic-block-diagram-clean-up-one-of.html" title="Automatic Block Diagram Clean Up, One of the New Features of LabVIEW 8.6" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_BN3_donLgVE/SJb3Vt6H9YI/AAAAAAAAAG8/ss-T70xb5nc/s72-c/BDCleanUp.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-6640175545932791740</id><published>2008-08-03T16:42:00.004-05:00</published><updated>2008-08-03T20:44:09.865-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW 8.6" /><title type="text">LabVIEW 8.6</title><content type="html">National Instruments and the LabVIEW R&amp;D team are proud to announce the release of &lt;a href="http://www.ni.com/labview86/upgrade.htm"&gt;LabVIEW 8.6&lt;/a&gt;. You can find further details on &lt;a href="http://www.ni.com/labview86/upgrade.htm"&gt;ni.com&lt;/a&gt; and in the &lt;a href="http://zone.ni.com/wv/app/doc/p/id/wv-157"&gt;new features webcast&lt;/a&gt; by LabVIEW Product Manager Mike Neal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-6640175545932791740?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/6640175545932791740/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=6640175545932791740" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/6640175545932791740" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/6640175545932791740" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/08/labview-86.html" title="LabVIEW 8.6" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-6884105776160566596</id><published>2008-07-31T15:00:00.004-05:00</published><updated>2008-07-31T15:58:08.026-05:00</updated><title type="text">My NIWeek 2008 Plans</title><content type="html">I'm really looking forward to &lt;a href="http://www.ni.com/niweek"&gt;NIWeek&lt;/a&gt; this year! I recently bought an iPhone and plan to make the most of it at the conference. I will be blogging from the convention center and I'll be on &lt;a href="https://twitter.com/eyesonvis"&gt;Twitter&lt;/a&gt; as well.&lt;br /&gt;&lt;br /&gt;On Tuesday evening I'll be hanging out at &lt;a href="http://www.ironworksbbq.com/about-us.asp"&gt;The Iron Works BBQ&lt;/a&gt; with some folks from LAVA, OpenG and NI. If you'd like to join us, there's still space available. Just add yourself to the &lt;a href="http://www.evite.com/app/publicUrl/IZJXEDDWQFEDEEGKXRTS/LAVA_OpenG_BBQ"&gt;evite&lt;/a&gt; and pay the organizer (Christopher Relf) $39 via Paypal, then come to The Iron Works, a short walk from the convention center, and enjoy all-you-can-eat BBQ. There are even &lt;a href="http://forums.lavag.org/t11315.html"&gt;door prizes&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;I'm not presenting any sessions this year, but I will be one of the volunteers at the "Ask the Experts" booth in the Expo hall on Tuesday from 5:00 PM to 6:00 PM. Feel free to stop by, say "hi" and tell me what you love/hate about LabVIEW.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-6884105776160566596?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/6884105776160566596/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=6884105776160566596" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/6884105776160566596" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/6884105776160566596" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/07/my-niweek-2008-plans.html" title="My NIWeek 2008 Plans" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-6079553796081658459</id><published>2008-07-08T21:25:00.002-05:00</published><updated>2008-07-08T22:04:12.350-05:00</updated><title type="text">Memory Lakes</title><content type="html">Bob Hamburger started a new &lt;span style="font-weight:bold;"&gt;LabVIEW Insights&lt;/span&gt; blog with a great post about &lt;a href="http://labviewinsights.blogspot.com/2008/07/insidious-memory-leaks-part-1.html"&gt;Insidious Memory Leaks&lt;/a&gt;. As he explains, it is important to avoid open/obtain/create operations inside a loop without corresponding close/release/destroy operations.&lt;br /&gt;&lt;br /&gt;However, I am a little uncomfortable with calling the problem Bob describes a "memory leak." A memory leak is when a program allocates memory and then loses track of it, failing to ever deallocate it. LabVIEW, however, manages memory allocations for you&lt;a href="#footnote"&gt;*&lt;/a&gt;. If your VI opens a reference and never closes it, LabVIEW will automatically deallocate it when the VI stops executing. (I mentioned this automatic deallocation in my post about &lt;a href="http://eyesonvis.blogspot.com/2008/03/vi-server-references.html"&gt;VI References&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;The automatic deallocation doesn't help anything while VIs are running, which is why rampant extraneous allocations like opening references inside a loop will degrade performance over time and cause more serious problems when system resources run out.&lt;br /&gt;&lt;br /&gt;But this isn't, technically, a memory leak. My colleague Stephen Mercer calls them "memory lakes" - allocating a huge pool of memory for no good reason.&lt;br /&gt;&lt;br /&gt;Although perhaps a subtle distinction, I think it's important to maintain as much technical clarity as possible when describing problems like this, to avoid misunderstandings when reporting issues to NI Support (and, eventually, to us in LabVIEW R&amp;D).&lt;br /&gt;&lt;br /&gt;- Christina&lt;br /&gt;&lt;br /&gt;&lt;a name="footnote"&gt;*&lt;/a&gt; - If you call DLLs or other external components that do memory allocations outside LabVIEW's control, those could cause memory leaks that LabVIEW can't do anything about. Also, when I say LabVIEW doesn't leak things, I mean LabVIEW's not supposed to leak them when operating properly, so if it ever is leaking then it's a bug (and a high priority one).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-6079553796081658459?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/6079553796081658459/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=6079553796081658459" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/6079553796081658459" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/6079553796081658459" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/07/memory-lakes.html" title="Memory Lakes" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-2713521506707920853</id><published>2008-04-17T17:12:00.002-05:00</published><updated>2008-04-17T17:28:49.462-05:00</updated><title type="text">LabVIEW and FIRST</title><content type="html">Do you know how some people have pet peeves? Things that shouldn't really bother them, but do?&lt;br /&gt;&lt;br /&gt;Well, one of my pet peeves is writing LabVIEW with the wrong capitalization.&lt;br /&gt;&lt;br /&gt;The "Introduction to LabVIEW" topic in the LabVIEW Help expands the acronym: &lt;span style="font-weight: bold;"&gt;Laboratory Virtual Instrument Engineering Workbench&lt;/span&gt;. I don't understand why publications that wouldn't call NASA "Nasa" or FIRST "First" insist in calling LabVIEW "LabView."&lt;br /&gt;&lt;br /&gt;Speaking of FIRST, did you see today's &lt;a href="http://digital.ni.com/worldwide/bwcontent.nsf/web/all/F70C10117567BBF18625742B00737DF5"&gt;announcement&lt;/a&gt;? "FIRST (For Inspiration and Recognition of Science and Technology), a nonprofit organization inspiring young people to be science and technology leaders, has selected the National Instruments CompactRIO embedded control platform as its next-generation FIRST Robotics Competition (FRC) robot controller."&lt;br /&gt;&lt;br /&gt;Next year's FRC competition will give high school students the option to program their robots using LabVIEW!&lt;br /&gt;&lt;br /&gt;I expect soon we'll be seeing these students joining us in our online communities. I hope you'll join me in welcoming them!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-2713521506707920853?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/2713521506707920853/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=2713521506707920853" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/2713521506707920853" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/2713521506707920853" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/04/labview-and-first.html" title="LabVIEW and FIRST" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-3540354857592688448</id><published>2008-03-30T13:22:00.004-05:00</published><updated>2008-04-22T00:24:26.577-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="vi_server" /><title type="text">What is VI Server?</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BN3_donLgVE/R-_movVMpDI/AAAAAAAAAGM/4sl4ql036FM/s1600-h/LabVIEWScreenSnapz001.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_BN3_donLgVE/R-_movVMpDI/AAAAAAAAAGM/4sl4ql036FM/s320/LabVIEWScreenSnapz001.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5183615283701261362" /&gt;&lt;/a&gt;&lt;br /&gt;After my last post, I got a question from some new LabVIEW users: "What exactly is VI Server?"&lt;br /&gt;&lt;br /&gt;In a strange coincidence of timing, there is brand-new session for NI's &lt;a href="http://www.ni.com/devday/"&gt;LabVIEW Developer Education Day&lt;/a&gt; that covers VI Server in detail:&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;Build Plug-in Architectures and Custom User Interfaces with VI Server&lt;/span&gt; goes into detail on using VI Server technology to alter the properties and methods of applications, as well as how to build plug-in, extendable architectures.  Demos include creating user interfaces that restrict access based on user or application status, advanced graph displays, and creating executables that can be built on after creation.&lt;/blockquote&gt;You can check the locations and times for this free event at &lt;a href="http://www.ni.com/devday/"&gt;http://www.ni.com/devday/&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;It's a great session, but since not everyone will get to see it, I will try to answer the question in my own words. The VI Server features of LabVIEW give you programmatic access to the properties and methods of controls, indicators, VIs, and even the LabVIEW application itself.&lt;br /&gt;&lt;br /&gt;It's pretty powerful stuff. You can use it to show/hide controls, change the window style of your VI, run VIs locally or on other computers, and much more.&lt;br /&gt;&lt;br /&gt;The general distinguishing feature between VI Server and "normal" VI diagram code (which typically deals with manipulating data) is the use of VI Server references. You open a reference to the item you need to use (e.g. VI, control, or application), you read/write properties or invoke methods, and then you close the reference. As I noted briefly in my last post, you have to be careful about closing references correctly. LabVIEW will automatically close references when your top-level VI stops running, but erroneously open references can cause problems while your VIs are running, including excessive memory usage and holding unneeded VIs in memory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-3540354857592688448?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/3540354857592688448/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=3540354857592688448" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/3540354857592688448" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/3540354857592688448" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/03/what-is-vi-server.html" title="What is VI Server?" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_BN3_donLgVE/R-_movVMpDI/AAAAAAAAAGM/4sl4ql036FM/s72-c/LabVIEWScreenSnapz001.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32599616.post-8781269649678639600</id><published>2008-03-05T13:43:00.005-06:00</published><updated>2008-04-22T00:24:51.184-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="vi_server" /><title type="text">VI Server References</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BN3_donLgVE/R874bzCa8VI/AAAAAAAAAGE/C1lqGKsXqXg/s1600-h/Launcher.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_BN3_donLgVE/R874bzCa8VI/AAAAAAAAAGE/C1lqGKsXqXg/s320/Launcher.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5174346178335797586" /&gt;&lt;/a&gt;&lt;br /&gt;In today's &lt;a href="http://www.eyesonvis.com/blog/Viewlets/VIRefs/eyesonvis_vireferences_viewlet_swf.html"&gt;video&lt;/a&gt;, I answer the question "why doesn't the VI in the picture above work?"&lt;br /&gt;&lt;br /&gt;Although a seemingly simple question, the answer involves some advanced VI Server topics, including the "lifetime" of VI references.&lt;br /&gt;&lt;br /&gt;While putting together this video, I found a lot of other potential topics for future posts (e.g. What's a "This VI" reference? What's the difference between a subVI call, the Run VI method, and a Call by Reference node?) If you have other questions on this topic, please feel free to post a comment and I'll try to get you an answer!&lt;br /&gt;&lt;br /&gt;- Christina&lt;br /&gt;&lt;br /&gt;PS Here's the &lt;a href="http://www.youtube.com/watch?v=F6BXpRPa59Q"&gt;same video on YouTube&lt;/a&gt; in case the other link doesn't work for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32599616-8781269649678639600?l=eyesonvis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://eyesonvis.blogspot.com/feeds/8781269649678639600/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=32599616&amp;postID=8781269649678639600" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/8781269649678639600" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32599616/posts/default/8781269649678639600" /><link rel="alternate" type="text/html" href="http://eyesonvis.blogspot.com/2008/03/vi-server-references.html" title="VI Server References" /><author><name>Christina</name><uri>http://www.blogger.com/profile/17288980210854942300</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="08333077494425734606" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_BN3_donLgVE/R874bzCa8VI/AAAAAAAAAGE/C1lqGKsXqXg/s72-c/Launcher.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total></entry></feed>
