Jump to content

John Lokanis

  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by John Lokanis

  1. Does anyone know if there was a change in the format of the NI Week conference this year? I am presenting and my session was scheduled for Monday afternoon. I don't remember there being any sessions on Monday other than for Alliance members (of which I am not). Seems odd. Anyone have the scoop on this?
  2. Looking for info on the BBQ signup this year. Google came up empty. Is it still happening?
  3. And they spelled LabVIEW wrong. Not sure if this person intended to use this for the same purpose you are intending.
  4. Back to the original topic: What is the best way to share reuse code that other code depends on? My reuse code is deployed in user.lib so that it appears in the pallet and can be found by quick drop. I have seen some suggestions that reuse code should be in the project folder for each project. This seems to be more portable but then leads to multiple copies of the same code on your system, making maintenance difficult. Another issue is using SCC with code in the user.lib. You don't really want your SCC system to be placing files in your program file directory. So, you end up with storing the code elsewhere for maintenance and then needing to package and deploy it after each edit. This make adding new functions and fixing bugs cumbersome. So, what solutions have others used? What are the tradeoffs? And what process should we adopt for reuse libraries we wish to share online? I would like to find a solution where we can get the benefits of the code being in user.lib without having to keep it under the LabVIEW installation folders.
  5. That is a good point. The code I would want to share includes one-off examples, reuse libraries and full frameworks. Not sure how to deal with all the dependancies. It seems like you would have to first share all the reuse components before you could share the higher level projects that rely on them. Also, how should we be packaging the reuse libraries? VIPM packages? Source code distributions? Zip files? And what level of documentation and testing is going to be expected and accepted? I think we need to come up with a baseline of what shared code should include so it has some value and is not too hard to use. But I guess we could let the market decide that. I would still like to hear what everyone thinks is needed at a minimum.
  6. One of the main topics of the 2018 CLA Summit was the need to improve access to open source code in the LabVIEW community. This is something that I have tried to do in the past with limited success. After hearing what others are doing and discussing the issues, I am inspired to take on the task of getting as much of my code that is shareable out into the open for others to use, improve, learn from and critique. So, the point of this thread is to figure out how best to do that. I have tried posting code to forums in the past. I have even posted to the code repository here on LAVA. I have used code posted here and via the tools network and VIPM in my own projects. But I am not sure if any of those avenues are the right path forward for me. There was much discussion about different open source repositories on the interwebs that we could leverage. There was also some discussion about how to help others discover the code you shared. What I did not hear was any definitive conclusions on how best to do this. So, the point of this thread is to try to solicit feedback on code sharing and come to some sort of consensus on the best options out there. If you have an opinion on this please join the conversation and share what you think is the best solution. Here are some questions I am trying to answer: 1. Where should we share code? What system works best for LabVIEW code and is user friendly enough to not discourage people from using it? Please share links and how-to documents for your preferred site/system. 2. How should we license code? I heard some discussion about the various type of licenses. I am not interested in retaining any rights to code I share and do not want to put any burdens on those who want to use and learn from any code I share. What licence is accepted in the open source community that supports this kind of sharing? 3. Once we post, how do we make our code discoverable? Do we need to post links all over the place or is there a better way? Here is one attempt at making that better you should check out if you have not already: I am not just interested in putting the code out there, but also trying to explain why I think it is worth your time to take a look. I am willing to post on forums, create a blog, even produce some vlogs on YouTube if it is the best option. Please let me know what format would motivate you to take the time to learn about the open source code out there. Either way, thanks for taking the time to read this thread and contribute what you can, even if it is just to follow the discussion and learn from others like I am trying to do. -John
  7. Did they forget to use their 'Where's Jeremy' app?!??
  8. We will miss you. I hope to attend both, but with the move to the later half of the week, if I go to the summit, I will have to miss the last day. :-(
  9. I can't seem to find the post or links to sign up for the LAVA BBQ this year (2018). Is it still on? Thanks for any info...
  10. I'm in! Looking forward to having BBQ and great conversations while not sweating to death in the process for once...
  11. I want to call my installer I built from a project in silent mode. (arguments: /q /acceptlicenses YES) But if the installer has no changes to install I want it to skip silently. Unfortunately the behavior I am seeing is the installer will run and reinstall everytime in this mode. Does anyone know how to get it to try and skip silently if there are no changes needed?
  12. Confirmed that the firewall kills stale connections after 1 hour. I'll add a timestamp to refresh the connection if it is over 55 mins old. Still want to know why the timeout for call by reference is so long. It appears to be 60 seconds and there is no way to change it.
  13. No proxy but there may a firewall. Need to talk to the IT guys. Keep alives would work but the system is not designed for that and it would add to traffic. Especially when across large distances with limited pipes. I wish there was some docs about how long the call by ref timeout is and how to control it. Another option is to store a time-stamp with the refs and refresh them if enough time has elapsed. Wish there was an easier solution.
  14. I could make a simple VI, but there is not much to it. Open app reference followed by open VI reference followed by call by reference. Save the app and vi refs for later. Then wait awhile and try to call the remote VI again with the cached refs. I am sure that IT is to blame for my open connection going bad, but I can't really control them and just need a way to recover quickly. I don't want to incur the cost of opening the app and vi refs for every call. Looking for an alternate solution.
  15. I am running into an issue where my VI Server connection goes stale after a few hours. Looking for a fast way to detect this and recover. Currently here is what I am doing: On first call, open the application reference and then open the VI reference. Cache both of these. Use the VI reference to call the remote VI. On subsequent calls, test the cached references to verify they are still valid and then call the remote VI. What appears to be happening is the references still appear to be valid in the caller but the connection is broken so the remote call fails. Then I detect this and reopen the app and VI refs and can again call the remote VI. The issues are: The failing remote call takes a long time to timeout and I do not see how to control this timeout. The test of the refs does not actually test to see of the network connection is still good. The result is it takes a long time to recover and this is upsetting the user since it appears the system is locked up. What I need is a way to control the timeout of the 'call by reference' node or a way to quickly test the references to verify the network connection is still good before I attempt the remote call. Any ideas? thanks, -John
  16. Not to go too off topic (is that even possible with this wide ranging post) but I am curious how you deal with databases, reading/writing XML, JSON or just basic OS level integration without using any .NET (et all). Clearly you can't use the NI toolkits since that is exactly what they are doing under the hood. Have you found some way to code a database interface to SQL Server, SQLite, MySQL or some other database in pure G code? If so, you should consider posting it on the tools network.
  17. Excellent feedback guys! I would love to run some of these theories by NI R&D and see if there is some merit to any of them. But I should have been more clear on the free beer offer. I need solutions, not just guesses or potential explanations. I am looking for a 'that happens because...' and a 'to avoid it do this...' to earn that beer. One good example is actually in my list about switching to files view before opening class properties. Credit for that one goes to Jon McBee at the last NI Week. As for the RT and FPGA related comments, unfortunately I only work with building Windows executables so I cannot comment on these issues happening in that realm. But I am glad to see others airing their grievances here as well. I hope this leads to some interesting discussions in Austin. I'll add one more grievance to my list: When calling .NET code, the execution thread is handed off to .NET, preventing LabVIEW from using it to execute any other parallel code. So, if you make enough simultaneous .NET calls (say around 50+) and they take a long time to return, you can starve LabVIEW of all threads. Not a single while loop will even be able to execute one iteration. This is crazy. Only solution is to customize your ini file to manually allocate threads to a different execution system and then set all your VIs that make .NET calls to run in that execution system. I hope in the future LabVIEW will automatically run all external calls in a separate execution system by default with it's own pool of threads. This one has bit me more that once.
  18. When I say 'Separate Code' is set, I am referring to to VI properties setting, not the Options setting. Of course the Options setting is set to separate code for new VIs, but I have also written tools to check all VIs I have ever created to ensure that they have code separation enabled. Unfortunately that is not possible to control for NI provided code or 3rd party (OpenG, etc).
  19. Nice tip. Unfortunately I am already doing it the way you suggest. However, I am using 0xC0 as all my dynamic VIs are reentrant in this system. I wonder if that is also an issue?
  20. (2) Yes, if I open a project and then open any VI (regardless of if it is in a class, library or by itself, I can RC on the icon and find all instances and it will show me where it is used in any other VI in the project. I can also just create a new VI and drop the AllVIsInMemory property down and it will list every VI in the project. I don't have 2014 installed anymore but I can confirm that this does not work in 2011. Works with SCC or without. (7) Never noticed that before but I *rarely* use files view. Only when I want to edit the icon of a class and don't need a coffee break while I wait for the dialog to load. Maybe it works in the background?
  21. With NI Week coming up, I look forward to one of the few times times a year I can discuss LabVIEW development with fellow engineers and not get a confused look and "lab-what?" as a response. As a daily user of LabVIEW, I am always running into odd things that I cannot explain or that bug me enough that I want to discuss them with someone. Unfortunately in the past I have not been able to recall many of these on the rare occasions that I am in the company of someone who knows what the $%$# I am talking about. So, lately I have been accumulating these in a file on my dev machine. I have decided to post them here in hope that one or more of these could be conversation starters when I bump into someone at NI Week this year. Of course feel free to respond to this thread with any answers or solutions you might have for any of them. If you can explain 5 or more of them let me know at the LAVA BBQ and I will buy you a beer! I suppose each of these could be a thread in itself so if a long discussion gets started here I will try to fork it into a separate topic. At the very least, I am curious if these issues are universal or I am just the lucky one who runs into this stuff all the time. So, please let me know if you have experienced any of these. Without further ado, in no particular order here is my current list of weird/annoying LabVIEW *issues*: Why does my splash screen vi (that launches my main vi) turn black for a long time when first running the application in the IDE? And why does not do this on subsequent runs? Why are classes locked after running and stopping the application even though no VIs are still running? Why does the Installer configuration take forever to open? (on large projects) Why does opening a VI outside a project cause it to recompile? All VIs are separated from their compiled code! And why does this result in broken EXE build if we don’t dump the compiled cache? Why does deleting the compiled cache cause many VIs to need to be resaved after they replenish the cache? (note: all VIs are set to separate code from compiled) Why does the cursor not track correctly on the block diagram causing me to grab a wire I was not even close to? Why does one (sometime more) VI (with separated code) want to be saved after a build? Why does a VI that is not calling any VIs that were edited (and was not automatically checked out when the edits were made) suddenly want to be saved for no reason? And why is it almost always the same VI regardless of the part of the project where the actual edits are? (and all code is separated). Why is every VI in memory when opening a project? DNat says that is not supposed to be the case. And in LV2011 it is not, but in LV2015 it is. Does make searching much easier, though. Really need a more unified search system. Need to be able to search code, projects and other files all from the same dialog. When building, the CANCEL button is disabled and grayed out. When it becomes available, if you press it to cancel, LV takes just as long to stop the compile as it would to just let it do the full compile in the first place. When finding all instances of a VI from the VI itself (RC on icon) the search window remains open as you open each location it is used. But, if you RC on the VI in the project to find all instances, the search window is different. And if you select something from it to view where the VI is used, the search window gets closed. Building EXEs can fail when writing the icon to the new EXE because the virus scanner has locked the file for scanning. This could be averted by having the build process retry the icon update with a short delay between attempts. Reported this as a bug and suggested they make it a CAR but it was declined since disabling the virus scanner fixed it. That option is becoming less available in corporate environments. Why does LabVIEW (almost always) crash when trying to undo the Remove and Rewire and the Insert Multiple Wires QD shortcuts? When creating accessors, why can’t they just be saved automatically and be added to source control without a bunch of prompts? Why does the properties dialog take forever to open on a class in large project when in items view but if you switch to files view it opens 10x faster? When you open LabVIEW and the prompt appears to log into SCC, it does not appear on top of other apps. So, if you don’t notice it quickly, LabVIEW times out and displays an error. The SCC login prompt is still visible, however so even if you log in at this point, LabVIEW will finish loading but will not be connected to SCC. Only way to fix this is close LabVIEW and open it again. Sure would be nice if there was a ‘Connect to SCC’ menu option you could use to fix this without a restart. Installer times out when installing large web services. Timeout is only 10 seconds. Should be much longer or should adapt to web service size. Web Service contains a lot of duplicated code from EXE. If the web service is running in the same application instance as the EXE, why does it need a copy of all the VIs as well? Thanks for reading! -John
  22. Nice tip! I'll add that one to my bag of tricks. I think I can find a way to use that to solve my issue.
  23. I have run into an issue with the Open Application Instance function and multiple DNS entries. I have two applications that I need to communicate across a network. Sometimes one of them is running on a machine connected via VPN. When that happens, the DNS entry for the machine contains both the local IP on the home network and the IP assigned by the VPN on the office network. If I try to lookup the remote machine name from an internal machine on the office network, I get back both IPs. And the order they are returned can change and is random. The problem comes in when I try to open a connection to the remote machine by name using the Open Application Instance function. It will try to resolve the name to an IP internally and then connect. But if the DNS give it the local (home) IP first then it will fail to connect since that IP is not part of the office network. If it give it the VPN IP first then it will work. The problem is I have no control over which IP it will see. And apparently it does not try all of them, only the first one. Does anyone know if there is a way to control this? I need to have it give me the local (LAN) IP if there is no VPN connection and the VPN IP if there are two IPs. And I need it to be deterministic, not random. thanks for any ideas, -John
  • Create New...

Important Information

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