08-11-2015 12:02 PM - edited 08-11-2015 12:04 PM
Oh man I'm excited for 2015. What matters less to me is neat features of LabVIEW, and what matters more is neat APIs to have control of what I want in LabVIEW, and one of those things is a right click API.
Another interesting effect of NI creating an API, that they then use to implement new features, is NI themselves will find limitations with their own API and fix things. Yeah me telling NI that I want some scripting function exposed doesn't do too much, but when someone in LabVIEW R&D says "We need to open up this scripting function so I can use it in the right click menu for a new feature." NI jumps on it. Several trickle down effects happened with the right click.
In addition to that there are the improved probes, grow/remove space, faster builds, a bunch of new TDMS stuff like defragging with a progress bar (hello finally), faster defrag, work with TDMS in memory, delete from TDMS, super secret asyncronous wires, filter search results, QuickItalic, and QuickUnderLine, hyperlinks in comments (great for documentation), improved write/read spreadsheets, I heard hidden gems has a progress bar example, write to system logs looks neat never noticed that before, and FPGA compile farm is now free with SSP.
I'm obviously a fan of LabVIEW, but I'm not just listing off new features, I'm listing new features I'm excited for. 2014 was a disapointment in terms of new features for most developers, but 2015 is not.
And the Java stuff teased at the Keynote is cool, but not in 2015.
Unofficial Forum Rules and Guidelines
Get going with G! - LabVIEW Wiki.
17 Part Blog on Automotive CAN bus. - Hooovahh - LabVIEW Overlord
08-12-2015 06:57 AM
@Hooovah- what's the super secret asynchronous wires? And what's the Java tease?
08-12-2015 07:09 AM
@ToeCutter wrote:
And what's the Java tease?
Watch Wednesday's keynote and view the section on NI's Software Platform: http://www.ni.com/niweek/keynote-videos/
@ToeCutter wrote:
what's the super secret asynchronous wires?
They are just sort of secret, but not really. They are basically another way to pass data between parallel loops. In this case, with a special wire. I'll see if I can find an article about them. The only ones I know of are in the LabVIEW Architects community and the now closed beta.
08-12-2015 07:11 AM
@ToeCutter wrote:
@Hooovah- what's the super secret asynchronous wires? And what's the Java tease?
Sometimes NI likes to test out new features in code by rolling it out secretly, or at least, not make a big deal about it, and see what users use it and see the interest level. When they do they don't always support the secret feature, but in this case they have stated that they will.
It's hard to describe, and I don't fully understand all the uses, but imagine a wire, that doesn't force data flow. If I have two while loops, and I want one to stop the other, I could use this asynchronous wire, to set the value in one place and read it in another. This can be done many other ways with notifiers, queues, user events, globals, locals in some cases, etc. But many of these options can be difficult to debug, because you can't follow the code back to where it came from. Like a queue could be hidden in a function global, and all the sudden things are getting enqueued and you don't know from where. There are other features but this is the most interesting case, being able to set data in one place, and get it in another, and have those two places in code linked by a wire that doesn't force data flow.
The asynchronous wire (I think the official name is channels) is basically syntactical sugar. It makes doing what we've already been doing, easier, and better documented. It isn't mind blowing, but the implementation with right click stuff is very cool. To get access to these things you run a VI burried in resource\ChannelPopupMenuItems. Stephen LM talks a little about it in the Augmenting the right click menu NI Week session.
As for the Java tease. Both in the keynote, and in the Future of LabVIEW session at NI Week, it was mentioned that NI is working on porting the run time engine to java. What that means, and to what extent, and when it will be released, has not been said. But part of what that could mean is being able to run a VI in your web browser, which can make for some interesting tools we might have had difficulty making previously.
Unofficial Forum Rules and Guidelines
Get going with G! - LabVIEW Wiki.
17 Part Blog on Automotive CAN bus. - Hooovahh - LabVIEW Overlord
08-12-2015 08:02 AM
08-12-2015 08:06 AM - edited 08-12-2015 08:07 AM
@mikeporter wrote:
Um, actually asynchronous wires are not secret at all. They are shipping right now in the new communications development suite (or whatever they call it). They were also shown in one of the keynotes. As with anything NI does, it it works out there and proves to be useful, one shouldn't be surprised to see it pop-up in other venues.
XNodes are shipped with LabVIEW, but development of them aren't supported outside of NI. Same with many other private functions. I also don't remember seeing it at the keynotes do you know what day it was shown? I also don't think that asynchrous wires are in the communication development suite, but could be wrong I haven't really used it much. I have yet to see an official announcement not on a private or beta forum talking about them, except at the presentation I mentioned earlier.
Unofficial Forum Rules and Guidelines
Get going with G! - LabVIEW Wiki.
17 Part Blog on Automotive CAN bus. - Hooovahh - LabVIEW Overlord
08-12-2015 08:38 AM
Too long to edit my last post. Here is some more information on the Channel Wire.
https://decibel.ni.com/content/docs/DOC-41918
Unofficial Forum Rules and Guidelines
Get going with G! - LabVIEW Wiki.
17 Part Blog on Automotive CAN bus. - Hooovahh - LabVIEW Overlord
08-12-2015 09:54 AM
@Hooovahh wrote:
@mikeporter wrote:
Um, actually asynchronous wires are not secret at all. They are shipping right now in the new communications development suite (or whatever they call it). They were also shown in one of the keynotes. As with anything NI does, it it works out there and proves to be useful, one shouldn't be surprised to see it pop-up in other venues.XNodes are shipped with LabVIEW, but development of them aren't supported outside of NI. Same with many other private functions. I also don't remember seeing it at the keynotes do you know what day it was shown? I also don't think that asynchrous wires are in the communication development suite, but could be wrong I haven't really used it much. I have yet to see an official announcement not on a private or beta forum talking about them, except at the presentation I mentioned earlier.
I think Mike is referring to the Multirate nodes. Just at a glance, it looks like they use channels to do the job, but I will not swear to it.
08-12-2015 10:47 AM
Thanks for the info Crossrulz, Hooovah!
08-12-2015 11:01 AM
If there were a 5+ year project they're working on but can't tell us yet, I would speculate it's not compiler related. Compilers are pretty long-lasting (IIRC, the original compiler lasted like 20 years, being built upon and extended over time) and the DFIR/LLVM system probably still has tons of opportunity for improvement.
I think a major refresh of the IDE would be welcome, but UI changes (for ANY software) always meet with initial rejection and NI always seems to walk back from major UI changes after that initial negative "I don't like change" feedback.
My totally wild speculation is that it's G related. It's been a decade since LVOOP was added, and there are plenty of ways the language could be improved. It doesn't seem extending LVOOP or Actors are a high priority though. Maybe they're releasing G to ANSI or another open standards body, in hopes of attracting more serious attention from computer scientists outside the typical LV users (one can dream). Maybe async wires are just the beginning of something much bigger.
There's this nugget in Getting Started With Channel Wires: "...(we have longer term plans to extend to cross-target communication)." The LabVIEW News blog's teasers seem to follow a theme: hardware, software, and data abstraction at the massive, distributed scale.
What hypothetical feature would a Java-based runtime, plus improved async messaging be required enable? That's also really sexy right now? And relevant to "big analog data"? CLOUD COMPUTING and DISTRIBUTED SYSTEMS. Perhaps they're building the ability to transparently virtualize and distribute VIs across multiple machines or a whole compute/instrument cloud. This is something Microsoft has been building for a decade - the ability to dynamically define the boundary between client and server code at runtime.
Some of the async wire features make more sense if they're communicating over a large network with an unknown number of instances on the other end (i.e. sender with smart data mutation abilities, side channel communication). Taking something that requires significant developer skill and effort and making it a transparent aspect of the language that novices can use is what makes G special, and this fits perfectly with that.
As for features in the 2015 version, it seems like the new Right-Click framework has the potential to be huge - already the posted right-click plugins knock out dozens of idea-exchange suggestions.