<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Thinking in G &#187; National Instruments</title>
	<atom:link href="http://thinkinging.com/category/national-instruments/feed/" rel="self" type="application/rss+xml" />
	<link>http://thinkinging.com</link>
	<description>an unfiltered stream of data flow consciousness</description>
	<lastBuildDate>Fri, 02 Oct 2009 23:51:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Vote for LabVIEW features at ni.com</title>
		<link>http://thinkinging.com/2009/06/01/vote-for-labview-features-at-nicom/</link>
		<comments>http://thinkinging.com/2009/06/01/vote-for-labview-features-at-nicom/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 15:55:41 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[National Instruments]]></category>

		<guid isPermaLink="false">http://thinkinging.com/?p=734</guid>
		<description><![CDATA[I&#8217;m excited about the new LabVIEW Idea Exchange where users can share and vote on ideas for LabVIEW features.  In fact, I&#8217;ve already posted an idea, Option for Disabled Structures to Not Use Default Value for Unwired Output Tunnels, which was taken from a previous post (a rant, really), here at Thinking in G.
I&#8217;m thankful [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m excited about the new <a href="http://forums.ni.com/t5/LabVIEW-Idea-Exchange/idb-p/labviewideas">LabVIEW Idea Exchange</a> where users can <strong>share and vote on ideas for LabVIEW features</strong>.  In fact, I&#8217;ve already posted an idea, <em><a href="http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Option-for-Disabled-Structures-to-Not-Use-Default-Value-for/idi-p/917469#A14">Option for Disabled Structures to Not Use Default Value for Unwired Output Tunnels</a></em>, which was taken from a <a href="http://thinkinging.com/2008/05/11/the-diagram-disable-structure-causes-bugs/">previous post</a> (a rant, really), here at <em>Thinking in G</em>.</p>
<p>I&#8217;m thankful that NI is giving users ways to communicate ideas for how to improve LabVIEW, and I&#8217;m certain that this will really help in giving users a voice about pain points in LabVIEW that might not be readily apparent to NI.  This is yet another example (here are a <a href="http://blog.jkisoft.com/jki/opening-up-labview-for-third-party-add-ons-like-vi-tester/">couple</a> <a href="http://blog.jkisoft.com/news/announcing-the-jki-right-click-framework-for-labview/">more</a>) of how NI is working hard to open up LabVIEW and let the community participate in making LabVIEW better.</p>
<p>Kudos to NI and the great feature ideas that are already showing up on this powerful, new community tool.</p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2009/06/01/vote-for-labview-features-at-nicom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Challenge to NI: Use your Application Builder</title>
		<link>http://thinkinging.com/2008/05/27/a-dogfooding-challenge-to-ni-use-your-application-builder/</link>
		<comments>http://thinkinging.com/2008/05/27/a-dogfooding-challenge-to-ni-use-your-application-builder/#comments</comments>
		<pubDate>Tue, 27 May 2008 07:00:51 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[National Instruments]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2008/05/27/a-dogfooding-challenge-to-ni-use-your-application-builder/</guid>
		<description><![CDATA[




I'd like to challenge developers at NI to find more ways to incorporate
stand-alone (built) LabVIEW applications into their internal systems
and processes.

One
of the major pain points in my day-to-day use of LabVIEW (which I love)
is building stand-alone applications. I suspect that the reason this is
so painful for me is that (in addition to my use cases [...]]]></description>
			<content:encoded><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
I'd like to challenge developers at NI to find more ways to incorporate
stand-alone (built) LabVIEW applications into their internal systems
and processes.<br />
<br />
One
of the major pain points in my day-to-day use of LabVIEW (which I love)
is building stand-alone applications. I suspect that the reason this is
so painful for me is that (in addition to my use cases being fairly
advanced) most of the developers at NI who are on the LabVIEW
development team probably don't build applications using LabVIEW --
they are not <a
 href="http://en.wikipedia.org/wiki/Eat_one%27s_own_dog_food">eating
their own dog food</a>.<br />
<br />
For
example,&nbsp;<a href="http://wiki.lavag.org/LVOOP">LVOOP</a>
(native LabVIEW Object Oriented Programming) dynamic method overriding
requires VIs of the same name,
but it is impossible to store two VIs of the same name inside an EXE?
How could this&nbsp;feature conflict possibly happen? &nbsp;I
suspect
that nobody actually tried to build an application that used LVOOP
until well after the feature was implemented. &nbsp;What's even
crazier
is that NI was working on this feature for many years, before it was
released.<br />
<br />
As time goes by, more people within NI are developing
code in LabVIEW on a daily basis. However, I'll bet that most of them
never actually use the application builder to build stand-alone
applications, since most LabVIEW code is shipped in source form and
never gets "built" -- it's just one big, <a
 href="/2008/02/11/monolithic-vs-modular-software-reuse-libraries-part-i/">monolithic
reuse library</a>.<br />
<br />
So,
I'd like to challenge developers at NI to find ways to incorporate
stand-alone (built) LabVIEW applications into their internal systems
and processes. It will make a huge difference to your customers.<br />
<br />
I'll
have you know that I'm committed to eating my own dog food, too.
&nbsp;At <a href="http://jkisoft.com">JKI</a>,
we work
very hard to use our own products in a variety of ways:<br />
<ul>
  <li><a href="http://jkisoft.com/easyxml">EasyXML</a>
is being used inside VI Package Manager<a
 href="http://jkisoft.com/vipm"></a>
(and other JKI products and projects), for reading and writing XML
files.</li>
</ul>
<ul>
  <li><a href="http://jkisoft.com/vipm">VI Package
Manager</a> (VIPM) is used to install EasyXML, as well as manage
the LabVIEW
configuration needed to develop and build EasyXML (and every other JKI
product and project).</li>
</ul>
I'm only telling you this, because I'm
committed to practicing what I preach. &nbsp;And, we're working on
a new version of VIPM that is going to take this concept to a whole new
level -- more on that, later.<br />
<br />
I should close by saying that I know some
of the people who work on the LabVIEW application builder and LVOOP and
they are all very nice/smart people who are very competent LabVIEW
developers and software designers. &nbsp;The only problem is that
they
are probably not eating their own dog food. &nbsp;NI has stated
that they are committed to this, so I want to make sure that this is
one area they do not neglect <img src='http://thinkinging.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> 
</body>
</html>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2008/05/27/a-dogfooding-challenge-to-ni-use-your-application-builder/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Did National Instruments forget about Virtual Instruments?</title>
		<link>http://thinkinging.com/2008/01/22/did-national-instruments-forget-about-virtual-instruments/</link>
		<comments>http://thinkinging.com/2008/01/22/did-national-instruments-forget-about-virtual-instruments/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 03:00:53 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[National Instruments]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2008/01/29/did-national-instruments-forget-about-virtual-instruments/</guid>
		<description><![CDATA[It&#8217;s been over 20 years now that National Instruments has been refining LabVIEW as a powerful test, measurement, and automation platform, as well as a general purpose graphical data flow programming language.  For many years, LabVIEW&#8217;s slogan was &#34;

   the software is the instrument

&#34;.  NI even named the basic building block [...]]]></description>
			<content:encoded><![CDATA[It&#8217;s been over 20 years now that National Instruments has been refining LabVIEW as a powerful test, measurement, and automation platform, as well as a general purpose graphical data flow programming language.  For many years, LabVIEW&#8217;s slogan was &quot;
<em zid="2">
   the software is the instrument
</em>
&quot;.  NI even named the basic building block of LabVIEW programs the &quot;virtual instrument&quot; (or &quot;VI&quot; for short).  But, after using LabVIEW now for well over a decade, I have to wonder&#8230;
<br zid="17" />
<br zid="18" />
<strong zid="3">
   Why is it so hard to create virtual instruments in LabVIEW?
</strong>
<br zid="19" />
<br zid="20" />
Just to be clear, when I say it&#8217;s difficult to create virtual instruments, I&#8217;m not taking about VIs (the basic building blocks of LabVIEW programs) with their Front Panels and Block Diagrams.  I am talking about 
<strong zid="4">
   software that 
   <em zid="5">
      behaves
   </em>
   like a instrument
</strong>
. Let&#8217;s take a step back and look at what I mean by this.
<br zid="21" />
<br zid="22" />
A traditional instrument is a physical device that sits on the lab bench or in a rack. The traditional instrument:
<br zid="29" />
<br zid="30" />
<ul zid="31">
   <li zid="32">
      has 
      <strong zid="6">
         statefulness
      </strong>
      &#8212; it remembers whether it&#8217;s turned ON or OFF, it knows its active configuration settings, etc.
   </li>
</ul>
<ul zid="33">
   <li zid="34">
      can do 
      <strong zid="7">
         work asynchronously 
      </strong>
      &#8212; you can ask it to reset, acquire some data, perform analysis, etc. You can ask it when it is finished with the asynchronous work and then ask it to send you the data.
   </li>
</ul>
<ul zid="35">
   <li zid="36">
      can have 
      <strong zid="8">
         multiple instances 
      </strong>
      &#8212; just order another one from the catalog and set it on the lab bench, right next to the first. You can give each physical instrument a name, such as &quot;multimeter 1&quot; and &quot;multimeter 2&quot; &#8212; you might even choose to use a label maker to print the name and stick it onto the front of each instrument, so that you never forget which one is which.
   </li>
</ul>
<ul zid="37">
   <li zid="38">
      can 
      <span zid="41" style="font-weight: bold;">
         communicate with other software and instruments 
      </span>
      &#8212; TCP-IP, RS-232, GPIB, etc. via SCPI, LXI, or other protocols.
      <br zid="39" />
   </li>
</ul>
OK, you get the point &#8212; you know all about traditional instruments.
<br zid="23" />
<br zid="24" />
Now, let&#8217;s say that you want to create a 
<span zid="42" style="font-style: italic;">
   virtual
</span>
instrument &#8212; meaning, you want to create software that uses modular hardware that can do everything that a bench-top instrument does. You want to use a data acquisition (DAQ) device as modular I/O and then write some software that uses the DAQ device to implement the functionality and behavior of a traditional multimeter.  Where do you get started?  First, let&#8217;s take inventory of the requirements:
<ul zid="9">
   <li zid="10">
      Statefulness
   </li>
   <li zid="11">
      Asynchronous processing of tasks
   </li>
   <li zid="12">
      Multiple named instances
   </li>
   <li zid="13">
      Ability to communicate with client software using industry standard protocols such as SCPI, LXI, etc.
   </li>
</ul>
Hmmm, it&#8217;s starting to sound like we need some kind of by-reference object-oriented framework&#8230;
<br zid="25" />
<br zid="26" />
Now, I&#8217;m not going to get into the whole 
<em zid="14">
   by value
</em>
vs 
<em zid="15">
   by reference
</em>
OOP debate.  All I&#8217;m saying is that almost every LabVIEW developer who creates a non-trivial automation or control system application will want to create a virtual instrument with all of the features that I&#8217;ve identified above and that these features sound a whole lot like by reference objects.
<br zid="27" />
<br zid="28" />
<span zid="45" style="font-weight: bold;">
   Where did NI drop the ball with virtual instrumentation?
</span>
<br zid="46" style="font-weight: bold;" />
<br zid="47" />
Did the concept of a VI as a Front Panel and Block Diagram distract them (and us) from what we really need from a virtual instrument?  Does NI&#8217;s marketing mantra shift away from &quot;the software is the instrument&quot; to &quot;design, develop, deploy&quot; imply that they aren&#8217;t really concerned with the developers ability to emulate pysical hardware using software (after all, NI does want you to buy 
<em zid="16">
   their
</em>
hardware)?  Is NI simply out of touch with the types of large systems that software developers create using LabVIEW? Or, is NI working on a by-reference framework that will allow us to create our own, stateful, asynchronous, multi-instance, by reference virtual instruments that can communicate using a variety of protocols and physical transport layers?
<br zid="49" />
<br zid="50" />
In a future article, I&#8217;ll describe more about the features that I&#8217;m looking for in a virtual instrumentation framework and how NI could stand to benefit from implementing something like it.
<br zid="48" />
<br zid="51" />
PS &#8211; After writing this, I did happen to find somebody at NI talking about the 
<a href="http://automatedtestblog.com/2008/01/22/trend2-growth-of-software-defined-instrumentation/" zid="52">
   Growth of Software-Defined Instrumentation
</a>
.  Hopefully that&#8217;s a good sign. <img src='http://thinkinging.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> 
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2008/01/22/did-national-instruments-forget-about-virtual-instruments/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
