Developer Series Presentation
Recently I was very lucky, in that National Instruments decided to use a presentation I put together for one of their Developer Series presentations. It’s a series of presentations on best practices for developing code in LabVIEW.
Here is the video and below is the chat log. This is the link for the AF Tester mentioned in the conversation. https://gitlab.com/stagg54/Actor_Tester
Enjoy.
Matthew Hawkins: Good morning from Lenexa, KS
Chris Cilino: howdy all!
Samuel Taggart: hello chris!
Maria Larrosa: Greetings from Palm Bay, FL
Cyril Gambini: Hello from Quebec ! Preety warm here, only -10C
fabrizio manzino: Hi from Italy 😉
Mark Lund: hello from lexington
Samuel Taggart: hello Mark
Virmantas Masaitis: HELLO
Isuru Wickramarachchi: Hello from Mars
Mark Lund: hi sam
Mark Lund: how is your PIE coming along?
Ethan Jenkins: Hi from Kingston, Ontario
Gary Still: Is the QMH sample project a framework?
Samuel Taggart: That presentation didn’t get into NI week
Vadim Bodner: I think I have seen this at a developer day
Samuel Taggart: but I got another one in. And I have been thinking a lot about PIE lately… It’s been very helpful. As you can see, I’ve been working on the E a lot lately
Samuel Taggart: the sample project is built using the DQMH framework
Samuel Taggart: I’ll let Fab explain it better
Gary Still: ok, thanks
Stephen Swindley: Are these slides going to be avaliable after?
Fabiola De la Cueva (Fab): The QMH sample project is not a framework. I call the regular QMH the NI QMH and it is the one that you get from the Getting Started Window
Samuel Taggart: yes vadim, it was presetnated at developer days
Fabiola De la Cueva (Fab): DQMH = Delacor Queued Message Handler is a framework that provides a way to create different modules that can communicate between them.
Fabiola De la Cueva (Fab): Vadim, the difference is that at Dev Days you might not have gotten all the examples
Fabiola De la Cueva (Fab): Gary Still, did I answer your question?
Samuel Taggart: yes Fab is correct, I did edit the presentation a bit since Dev Days
Gary Still: yes, i’m not too familiar with DQMH, i’ve basically extended the QMH sample project and have used it as a starting point on several projects
Fabiola De la Cueva (Fab): the DQMH extends the QMH with the use of user events for the communication between modules
Gary Still: ok
Fabiola De la Cueva (Fab): DQMH is free and you can install it via VIPM
Samuel Taggart: Gary you should watch Fabs presetntation on DQMH decisions behind the deisign from NI week
Gary Still: i’ll check it out
Gary Still: thanks
Matt Jacobson: The DQMH also provides better starting templates with common code and the ability to script messages
Samuel Taggart: just google it and you’ll find it
Samuel Taggart: that tooling is a very important part of it.
Matt Jacobson: ^ agreed
Christian Guertin: FERRARI
Tim Cormier: DQMH: http://sine.ni.com/nips/cds/vi
Ethan Jenkins: Haha I bet most 16 year old kids would choose the lambo
Gary Still: 16 yr old gets clunker
Theodore Tomczak 2: Ferrari La Ferrari
Fabiola De la Cueva (Fab): thanks Tim for the link… unfortunatelly the ratings are down now, but I can tell you that until last week the DQMH had twenty 5 stars reviews 😉
Jeffrey Mach: @Christian … starting to feel old. Also he didn’t know “Home Improvement.” Maybe should have gone with a Jeremy Clarkson (Top Gear / Grand Tour) reference. “More Power!” rarely goes well there either.
Maria Larrosa: @Tim Thanks for the link
Fabiola De la Cueva (Fab): we have several blog posts on DQMH. If you want to see Darren Nattinger (fastest LabVIEW Developer) create a complete application from 0 to exe in less than an hour using DQMH, check this one out: http://delacor.com/rapid-appli
Matt Jacobson: thank you for the link Fab, I remember you talking about that presentation but don’t think Mark taped it at NIWeek
Fabiola De la Cueva (Fab): Sam is talking about online support. The DQMH online support is available via ni.com forums: https://forums.ni.com/t5/Delac
Samuel Taggart: I should have mentioned in the previous slide that the messaging generally runs up and down the tree – not across
Ethan Jenkins: Are there any good examples of object-oriented design patterns in LabVIEW that include example code for how to solve problems?
Samuel Taggart: For example the Root Actor had Actors A and B as nested actors. If you are sticking to the Actor Tree communications model, then A and B don’t talk directly but have to go through the root
Samuel Taggart: The idea is that this makes it easier to track messages instead of having them fly all over the place
Samuel Taggart: Ethan, yes there. I’m not sure where they are off the top of my head. Perhaps sommeone else does. I kind of remember Stephen having a white papaer of common OOP designs in LabVIEW. Perhaps google that.
Matt Jacobson: @Ethan, Maybe start here https://forums.ni.com/t5/LabVI
Ethan Jenkins: Will do, thanks
Samuel Taggart: well there you go.
Fabiola De la Cueva (Fab): If you are already familiar with Object
Fabiola De la Cueva (Fab): Oriented programming, this page: https://forums.ni.com/t5/Examp
Fabiola De la Cueva (Fab): goes over the patterns from the Gang of 4 and converts them to LVOOP
Ethan Jenkins: I’ll take a look at those links after the talk, thanks for sharing!
Ethan Jenkins: We are familiar with OOP and use it in our projects
Fabiola De la Cueva (Fab): Sam is going over the tools that create messages for Actor Framework. These tools make the framework a lot more accessible, all the repetitive work is taken care by the tools.
Sergiy Tolstukhin: DQMH for NXG? soon?
Samuel Taggart: I don’t think anybody would have adopted it without the tooling. It was too tedious
Fabiola De la Cueva (Fab): Sergiy, we will be able to migrate DQMH code to NXG soon. However, people use DQMH for the tooling. We need to wait for G scripting to be available in NXG.
Sergiy Tolstukhin: Thx!
Fabiola De la Cueva (Fab): We did start with the NI QMH. We wanted to make sure that people felt it was familiar and they could get support from AEs on their code.
Fabiola De la Cueva (Fab): We also wanted to show how we could automate with scripting tools an existing architecture.
Samuel Taggart: shameless plug: if you like this feature in the DQMH and miss it in the AF, check out bit.ly/aftester
Fabiola De la Cueva (Fab): 😀
Fabiola De la Cueva (Fab): Please note that Sam started the DQMH project from project template, but you can also add DQMH modules to an existing project
Fabiola De la Cueva (Fab): If you protect the library, all the private folders are hidden
Fabiola De la Cueva (Fab): this make it more accessible for junior developers
Samuel Taggart: good tip: I will have to remember that.
Fabiola De la Cueva (Fab): and it does not require a password, just right click on the library>>protection and select to protect without a password
Fabiola De la Cueva (Fab): DQMH modules can be headless as well
Fabiola De la Cueva (Fab): just don’t call the “show panel” request event 😉
Fabiola De la Cueva (Fab): Please note that we made the top level application a State Machine to show that DQMH is not contagious. You can call it from your existing code.
Samuel Taggart: that is a very good point.
Michael Rodriguez: Is there a template for the Asynchronous Message Communication (AMC) framework? I’ve only seen a vi package for it.
Fabiola De la Cueva (Fab): Michael, look in the shipping examples after installing the AMC package
Matt Jacobson: I thought AMC ships with a simple example
Tim Cormier: How stable is the AMC package?
Fabiola De la Cueva (Fab): They used to be on the palette, but LabVIEW Tools Network guidelines require the examples to be in the examples folder
Fabiola De la Cueva (Fab): Tim Cormier, as far as I know the Systems Engineers at NI still support AMC
Fabiola De la Cueva (Fab): AMC does not have the scripting tools though
Michael Rodriguez: Does DQMH support network messages like AMC?
Fabiola De la Cueva (Fab): Not natively, but Joerg Hampell has created a Networking Module template http://delacor.com/dqmh-generi
Fabiola De la Cueva (Fab): Like Sam is pointing out now, you can add your own templates to the DQMH
Matt Jacobson: also shameless NI plugs https://github.com/NISystemsEn
Fabiola De la Cueva (Fab): Validate DQMH Module also is used to let you upgrade your existing DQMH modules when we release new versions.
Fabiola De la Cueva (Fab): On DQMH 4.0 we even have a validate test to let you know if you are enqueing a message to the Message Handling Loop and that message case doesn’t exist!
Samuel Taggart: I don’t cover sending network message in either, but in the AF there is a Network Endpoint package. Allen has a presentation he did at Dev Days all about it. I highly recommend you check it out if you are interested in network coms for AF
Samuel Taggart: That type checking is definitely missing fromthe AF
Fabiola De la Cueva (Fab): Please note that DQMH tools scripted all of the code for Sam
Ted Gammell: joined late. Wil a video be available to view this later?
Fabiola De la Cueva (Fab): and brought the API Tester to the front for him to figure out how he was going to test the Request even before he implemented it.
Samuel Taggart: Ted: It will be posted somewhere.
Fabiola De la Cueva (Fab): Ted, since we are registered, NI will send us a link to the video of the presentation later
Samuel Taggart: there you go.
Jeffrey Mach: @Ted – The e-mail with the links will go out after the entire series is over, but until then, you can go directly to: http://www.ni.com/innovations-
Mehul Shah, Multimedia Specialist: @Jeffrey thanks for sharing
Marc Dubois: Fab, in AF, there is a tree structure that is assumed by default (actor communicate only with caller or child). Is there such a structure assumed in DQMH?
Luis Castañeda-Trejo: Does anyone knows a link that compares AF, DQMQ and JKI SMOs? Our team is familiar with NI’s QMH and OOP but we are starting to move to AF and JKI SMOs but DQMH looks interesting and I would like to know more about similarities and differences between them.
Fabiola De la Cueva (Fab): no, there is no structure assumed in DQMH. All modules can talk to all modules.
Marc Dubois: I guess I also just got the answer from Sam’s slide.
Fabiola De la Cueva (Fab): However, we do recommend that you do some modeling and design of your communications to avoid circular references.
Scott Doyle: what is meant by “contagious”?
Fabiola De la Cueva (Fab): Luis, this presentation is a good comparison for both AF and DQMH.
Samuel Taggart: scott I’m about to cover it
Fabiola De la Cueva (Fab): Luis, I don
Fabiola De la Cueva (Fab): Luis, I don’t want to shut JKI SMOs down, just be aware that the way the methods are created, they include a race condition
Fabiola De la Cueva (Fab): so you will have to make sure you understand how they are created and work around that race condition.
Luis Castañeda-Trejo: Ok, good to know that
Luis Castañeda-Trejo: Thanks Fab
Fabiola De la Cueva (Fab): Contagious = once you add an actor, everything starts becoming an actor. For DQMH you can add DQMH to any exiting code.
Marc Dubois: Thank you Fab.
Fabiola De la Cueva (Fab): Sam is talking about no ownership to DQMH. You can create that, we have created DQMH hardware managers that own DQMH modules.
Samuel Taggart: for that reason DQMH can great for refactoring spaghetti code
Samuel Taggart: Fab: Do you place one library inside of another for that?
Fabiola De la Cueva (Fab): On the reusability point, if you are comfortable with LVOOP, you can add LVOOP inside a DQMH module and leverage inheritance and reusability that way.
Samuel Taggart: and then make the sub-modules private
Matt Jacobson: The AF course does have a whole section on using AF in your existing applications so it is definitely possible but if it has an entire section in training you can guess that it isn’t trivial
Samuel Taggart: Matt: you are correct, it is possible, but certainly not trivial
Fabiola De la Cueva (Fab): Sam, no, no need to put a DQMH library inside another. The way we do it is we put all the related DQMH modules in the same project and then package them either by VIPM or PPLs and use them with other code.
Scott Doyle: thanks Sam, Fab
Samuel Taggart: your welcome
Fabiola De la Cueva (Fab): Actualy, if you see the DQMH API tester and the AF testers that Sam has created, you can see all the additional code that is needed to call a DQMH module vs the code needed to call an Actor from AF
Samuel Taggart: yes it is quite substantial
Samuel Taggart: that blowup is of the part on the left
Samuel Taggart: apparently the screencast didn’t pick up my cursor
Samuel Taggart: the right side is all messages
Cyril Gambini: Once upon a time, reeentrant VIS which were part of a class had a forced reentrancy set to ‘shared’. It messed up with advanced signal pricessing VIs because they hold uninitialized shift registers. Highly uncompatible with ‘calculation’actors. Is that still true ?
Matt Jacobson: I’ll have to keep that tester in mind, I got completely lost in training when we got to testing
Matt Jacobson: AO Design training that it
Samuel Taggart: in case someone missed the link for the tester http://bit.ly/afterseter
Fabiola De la Cueva (Fab): Cyril, I am not familiar with that issue. I would post it on the forums
Cyril Gambini: POsted already 3 years ago, we had to redesign bunch of things…
Samuel Taggart: cyril: I can’t comment on that either. I though that was only for dynamic dispatch?
Cyril Gambini: yes indeed, for dynmaic dispatch. We created a calculation engine based on lauchning actors at specific time to perform specific calculations in parallel. Didn’t end well
Ethan Jenkins: How does the performance of the DQMH compare to the standard QMH structure? In terms of timing and resource usage?
Fabiola De la Cueva (Fab): One comment on the “DQMH Plateaus”, if you combine DQMH with LVOOP then you can keep going on your way to customization.
Samuel Taggart: yes that is a great point
Fabiola De la Cueva (Fab): Ethan, just like QMH, the performance will depend on how you implement your code 😉
Ethan Jenkins: Fair enough
Sergiy Tolstukhin: Any example of “combine DQMH with LVOOP”
Scott Doyle: bump on Sergiy’s comment as I was just typing that same thing
Samuel Taggart: Sergiy think of a HAL. The DQMH module would become the API
Fabiola De la Cueva (Fab): Sergiy, sure, there is a HAL in your DQMH blogpost: http://delacor.com/hal-in-your
Samuel Taggart: the data in the shift register inside the bottom loop of the DQMH would be the parent class IE. DMM paret
Samuel Taggart: then just a request message to set the child class of the exact dmm
Fabiola De la Cueva (Fab): also, the example on creating a DQMH template includes replacing the local cluster with an object. http://delacor.com/documentati
Sergiy Tolstukhin: I used Chris post for TestStand fo 4 Power Supplies. Any update for that post ?
Fabiola De la Cueva (Fab): We have also done classes that wrap DQMH modules, we have it on our queue to eventually do a blog post about that. We have done it for simulated hardware.
Fabiola De la Cueva (Fab): Sergiy, not an update since that, let me know what else you would like to see.
Sergiy Tolstukhin: I wil
Fabiola De la Cueva (Fab): DQMH uses the DQMH API Tester “Status updated” broadcast as a way to trace
Fabiola De la Cueva (Fab): You can create DQMH logger that registers to all of the Status Updated broadcasts from all of your modules
Fabiola De la Cueva (Fab): BTW, Delacor is more than just me 😉
Tim Cormier: @Fabiola De la Cueva (Fab): do you have an example?
Fabiola De la Cueva (Fab): DQMH 4.0 is in Beta right now: http://delacor.com/announcing-
Samuel Taggart: I apologize for butchering Daklu’s name. It is David snyder
Fabiola De la Cueva (Fab): I would add to the list of fameworks: Dr. James Powell’s Messenger
Matt Jacobson: I think norm also has a framework called ESF
Fabiola De la Cueva (Fab): Norm has TLB and TLB’
Fabiola De la Cueva (Fab): TLB = Top level baseline
Matt Jacobson: also plug for DCAF
Samuel Taggart: yes ESF is extensible session framework
Fabiola De la Cueva (Fab): DQMH supports LabVIEW 2014 and later
Scott Doyle: we use lapdog, but I hadn’t considered it a framework on it’s own
Qingchun Zhao: For a specific project, both may work though the programmer may feel differently?
Samuel Taggart: any more questions
Fabiola De la Cueva (Fab): DQMH events do not get auto wired in LabVIEW 2014, you need LabVIEW 2015 for that
Carse Crews: Thanks
Virmantas Masaitis: Thanks
Scott Doyle: at least not in the sense that AF and DQMH are frameworks
Samuel Taggart: I haven’t used lapdog, so I can’t answer that
Michael Lindquist: where can we go to view this over again?
Adam Falkowski: Thanks
Vadim Bodner: any pointers how to implement a sequencer using AF?
Vadim Bodner: state machine of sorts*
Samuel Taggart: http://www.ni.com/innovations-
Mehul Shah, Multimedia Specialist: @Michael, I’ll put it online at ni.com/webcasts by this afternoon
Michael Lindquist: thanks
Juan Carlos Flores: Thank you for the presentation. Much appreciated!
Samuel Taggart: Vadim look up state pattern actors or have a helperloop
Matt Jacobson: thanks for presenting sam
Fabiola De la Cueva (Fab): Vadim, I believe Allen Smith had created a State Machine Actor, check on the AF forum
Scott Doyle: thank you very much!
Marc Dubois: Thank you Sam. Your presentation helped me a lot.
Matt Jacobson: see some people again at LAF tonight?
Vadim Bodner: helper loop imlementing a regular state machine?
fabrizio manzino: thanks
Guilherme Correa: Thanks
Rollin McCarty: Thank you Sam!
Cyril Gambini: Tank you Sam !
Samuel Taggart: glad you all enjoyed it.
Fabiola De la Cueva (Fab): See you at LAF
William Luu: Thank You Sam !
Leland Bryton: Thank You, Bye
Fabiola De la Cueva (Fab): Sam, awesome job, I appreciate that you were able to keep it objective
Fabiola De la Cueva (Fab): I could never find out if you had a favorite or not
David Harden: Whats the best way to help wrap my head around coupling in AF. Specifically Zero coupling
Luis Castañeda-Trejo: Thanks Sam.
Stephen Swindley: Thanks Sam, great presentation
Samuel Taggart: David, probably the class, but you can also look at the aftester
Samuel Taggart: find my presentation a the ECLA summit and download the example code
Matt Jacobson: @David I only really got the zero coupling after making the same message, one standard and one with the zero coupling, and then trying to use that actor again but from a diffeerent caller
Samuel Taggart: Matt hit the nail on the head
Matt Jacobson: If you aren’t reusing something the zero coupling just seems like a lot of extra work
Samuel Taggart: basically anytime you are sending messages to the caller, you should be using zero-coupling
Samuel Taggart: or you could also use self-addressed messages
Scott Doyle: are the comments also a part of the saved presentation?
Samuel Taggart: see Allen’s presentation at the recent eCLA for more on the self-addressed messages
David Harden: great! Thanks Sam and Matt
Scott Doyle: There were a significant amount of additional links within the chat comments
David Harden: Great Presentation BTW
Samuel Taggart: I have no idea about the comments. you might see if you can copy them and paste them
Scott Doyle: and additional overall information, as well
Samuel Taggart: I certainly hope they do get saved.
Samuel Taggart: I think they would be very useful
Scott Doyle: agreed
Fabiola De la Cueva (Fab): http://delacor.com/documentati
Samuel Taggart: I was able to copy what was available in the chat window, but apparently only a certain number of lines are displayed. I’m missing the earlier comments
Fabiola De la Cueva (Fab): all the DQMH videos are at: bit.ly/DelacorQMH
Fabiola De la Cueva (Fab): @Mehul, do you know if the comments get saved with the webinar as well?
Fabiola De la Cueva (Fab): I believe they do
Mehul Shah, Multimedia Specialist: @Fabiola yes they do
Mehul Shah, Multimedia Specialist: I can send them to you and Sam
Samuel Taggart: perfect
Samuel Taggart: that would be great
Scott Doyle: excellent, thanks again. have a great day everyone
Mehul Shah, Multimedia Specialist: alright everyone, any last minute questions before I close the room?
Evgeny Fomin: Please chare the comments with all of us!
Samuel Taggart: i would also be interested in seeing the attendance and the results of the survey
Evgeny Fomin: share 😉
Sergiy Tolstukhin: Thanks!
Fabiola De la Cueva (Fab): Evgeny, the comments will be visible during the recording
Evgeny Fomin: Zdorovo Serega
Evgeny Fomin: Thank uou, Fabiola!
Tim Cormier: How soon before we get the link to the webinar video? I still haven’t recieved a link to a webinar I watched a week ago.
Sergiy Tolstukhin: da
Samuel Taggart: bye everyone. thanks for attending
Mehul Shah, Multimedia Specialist: @Tim check them out here, they get released by the afternoon every day https://events.ni.com/profile/
Mehul Shah, Multimedia Specialist: alright everyone, I’ll be closing the room now, thank you all for attending
Fabiola De la Cueva (Fab): thanks everyone
Fabiola De la Cueva (Fab): Sam, awesome job!
Tim Cormier: Sure, aren’t those from an archive, that doesn’t include the chat room comments does it for today?
Mehul Shah, Multimedia Specialist: no we do not release comments for privacy purposes
Fabiola De la Cueva (Fab): Ted, since we are registered, NI will send us a link to the video of the presentation later
Samuel Taggart: there you go.
Jeffrey Mach: @Ted – The e-mail with the links will go out after the entire series is over, but until then, you can go directly to: http://www.ni.com/innovations-
Mehul Shah, Multimedia Specialist: @Jeffrey thanks for sharing
Marc Dubois: Fab, in AF, there is a tree structure that is assumed by default (actor communicate only with caller or child). Is there such a structure assumed in DQMH?
Luis Castañeda-Trejo: Does anyone knows a link that compares AF, DQMQ and JKI SMOs? Our team is familiar with NI’s QMH and OOP but we are starting to move to AF and JKI SMOs but DQMH looks interesting and I would like to know more about similarities and differences between them.
Fabiola De la Cueva (Fab): no, there is no structure assumed in DQMH. All modules can talk to all modules.
Marc Dubois: I guess I also just got the answer from Sam’s slide.
Fabiola De la Cueva (Fab): However, we do recommend that you do some modeling and design of your communications to avoid circular references.
Scott Doyle: what is meant by “contagious”?
Fabiola De la Cueva (Fab): Luis, this presentation is a good comparison for both AF and DQMH.
Samuel Taggart: scott I’m about to cover it
Fabiola De la Cueva (Fab): Luis, I don
Fabiola De la Cueva (Fab): Luis, I don’t want to shut JKI SMOs down, just be aware that the way the methods are created, they include a race condition
Fabiola De la Cueva (Fab): so you will have to make sure you understand how they are created and work around that race condition.
Luis Castañeda-Trejo: Ok, good to know that
Luis Castañeda-Trejo: Thanks Fab
Fabiola De la Cueva (Fab): Contagious = once you add an actor, everything starts becoming an actor. For DQMH you can add DQMH to any exiting code.
Marc Dubois: Thank you Fab.
Fabiola De la Cueva (Fab): Sam is talking about no ownership to DQMH. You can create that, we have created DQMH hardware managers that own DQMH modules.
Samuel Taggart: for that reason DQMH can great for refactoring spaghetti code
Samuel Taggart: Fab: Do you place one library inside of another for that?
Fabiola De la Cueva (Fab): On the reusability point, if you are comfortable with LVOOP, you can add LVOOP inside a DQMH module and leverage inheritance and reusability that way.
Samuel Taggart: and then make the sub-modules private
Matt Jacobson: The AF course does have a whole section on using AF in your existing applications so it is definitely possible but if it has an entire section in training you can guess that it isn’t trivial
Samuel Taggart: Matt: you are correct, it is possible, but certainly not trivial
Fabiola De la Cueva (Fab): Sam, no, no need to put a DQMH library inside another. The way we do it is we put all the related DQMH modules in the same project and then package them either by VIPM or PPLs and use them with other code.
Scott Doyle: thanks Sam, Fab
Samuel Taggart: your welcome
Fabiola De la Cueva (Fab): Actualy, if you see the DQMH API tester and the AF testers that Sam has created, you can see all the additional code that is needed to call a DQMH module vs the code needed to call an Actor from AF
Samuel Taggart: yes it is quite substantial
Samuel Taggart: that blowup is of the part on the left
Samuel Taggart: apparently the screencast didn’t pick up my cursor
Samuel Taggart: the right side is all messages
Cyril Gambini: Once upon a time, reeentrant VIS which were part of a class had a forced reentrancy set to ‘shared’. It messed up with advanced signal pricessing VIs because they hold uninitialized shift registers. Highly uncompatible with ‘calculation’actors. Is that still true ?
Matt Jacobson: I’ll have to keep that tester in mind, I got completely lost in training when we got to testing
Matt Jacobson: AO Design training that it
Samuel Taggart: in case someone missed the link for the tester http://bit.ly/afterseter
Fabiola De la Cueva (Fab): Cyril, I am not familiar with that issue. I would post it on the forums
Cyril Gambini: POsted already 3 years ago, we had to redesign bunch of things…
Samuel Taggart: cyril: I can’t comment on that either. I though that was only for dynamic dispatch?
Cyril Gambini: yes indeed, for dynmaic dispatch. We created a calculation engine based on lauchning actors at specific time to perform specific calculations in parallel. Didn’t end well
Ethan Jenkins: How does the performance of the DQMH compare to the standard QMH structure? In terms of timing and resource usage?
Fabiola De la Cueva (Fab): One comment on the “DQMH Plateaus”, if you combine DQMH with LVOOP then you can keep going on your way to customization.
Samuel Taggart: yes that is a great point
Fabiola De la Cueva (Fab): Ethan, just like QMH, the performance will depend on how you implement your code 😉
Ethan Jenkins: Fair enough
Sergiy Tolstukhin: Any example of “combine DQMH with LVOOP”
Scott Doyle: bump on Sergiy’s comment as I was just typing that same thing
Samuel Taggart: Sergiy think of a HAL. The DQMH module would become the API
Fabiola De la Cueva (Fab): Sergiy, sure, there is a HAL in your DQMH blogpost: http://delacor.com/hal-in-
Samuel Taggart: the data in the shift register inside the bottom loop of the DQMH would be the parent class IE. DMM paret
Samuel Taggart: then just a request message to set the child class of the exact dmm
Fabiola De la Cueva (Fab): also, the example on creating a DQMH template includes replacing the local cluster with an object. http://delacor.com/
Sergiy Tolstukhin: I used Chris post for TestStand fo 4 Power Supplies. Any update for that post ?
Fabiola De la Cueva (Fab): We have also done classes that wrap DQMH modules, we have it on our queue to eventually do a blog post about that. We have done it for simulated hardware.
Fabiola De la Cueva (Fab): Sergiy, not an update since that, let me know what else you would like to see.
Sergiy Tolstukhin: I wil
Fabiola De la Cueva (Fab): DQMH uses the DQMH API Tester “Status updated” broadcast as a way to trace
Fabiola De la Cueva (Fab): You can create DQMH logger that registers to all of the Status Updated broadcasts from all of your modules
Fabiola De la Cueva (Fab): BTW, Delacor is more than just me 😉
Tim Cormier: @Fabiola De la Cueva (Fab): do you have an example?
Fabiola De la Cueva (Fab): DQMH 4.0 is in Beta right now: http://delacor.com/announcing-
Samuel Taggart: I apologize for butchering Daklu’s name. It is David snyder
Fabiola De la Cueva (Fab): I would add to the list of fameworks: Dr. James Powell’s Messenger
Matt Jacobson: I think norm also has a framework called ESF
Fabiola De la Cueva (Fab): Norm has TLB and TLB’
Fabiola De la Cueva (Fab): TLB = Top level baseline
Matt Jacobson: also plug for DCAF
Samuel Taggart: yes ESF is extensible session framework
Fabiola De la Cueva (Fab): DQMH supports LabVIEW 2014 and later
Scott Doyle: we use lapdog, but I hadn’t considered it a framework on it’s own
Qingchun Zhao: For a specific project, both may work though the programmer may feel differently?
Samuel Taggart: any more questions
Fabiola De la Cueva (Fab): DQMH events do not get auto wired in LabVIEW 2014, you need LabVIEW 2015 for that
Carse Crews: Thanks
Virmantas Masaitis: Thanks
Scott Doyle: at least not in the sense that AF and DQMH are frameworks
Samuel Taggart: I haven’t used lapdog, so I can’t answer that
Michael Lindquist: where can we go to view this over again?
Adam Falkowski: Thanks
Vadim Bodner: any pointers how to implement a sequencer using AF?
Vadim Bodner: state machine of sorts*
Samuel Taggart: http://www.ni.com/innovations-
Mehul Shah, Multimedia Specialist: @Michael, I’ll put it online at ni.com/webcasts by this afternoon
Michael Lindquist: thanks
Juan Carlos Flores: Thank you for the presentation. Much appreciated!
Samuel Taggart: Vadim look up state pattern actors or have a helperloop
Matt Jacobson: thanks for presenting sam
Fabiola De la Cueva (Fab): Vadim, I believe Allen Smith had created a State Machine Actor, check on the AF forum
Scott Doyle: thank you very much!
Marc Dubois: Thank you Sam. Your presentation helped me a lot.
Matt Jacobson: see some people again at LAF tonight?
Vadim Bodner: helper loop imlementing a regular state machine?
fabrizio manzino: thanks
Guilherme Correa: Thanks
Rollin McCarty: Thank you Sam!
Cyril Gambini: Tank you Sam !
Samuel Taggart: glad you all enjoyed it.
Fabiola De la Cueva (Fab): See you at LAF
William Luu: Thank You Sam !
Leland Bryton: Thank You, Bye
Fabiola De la Cueva (Fab): Sam, awesome job, I appreciate that you were able to keep it objective
Fabiola De la Cueva (Fab): I could never find out if you had a favorite or not
David Harden: Whats the best way to help wrap my head around coupling in AF. Specifically Zero coupling
Luis Castañeda-Trejo: Thanks Sam.
Stephen Swindley: Thanks Sam, great presentation
Samuel Taggart: David, probably the class, but you can also look at the aftester
Samuel Taggart: find my presentation a the ECLA summit and download the example code
Matt Jacobson: @David I only really got the zero coupling after making the same message, one standard and one with the zero coupling, and then trying to use that actor again but from a diffeerent caller
Samuel Taggart: Matt hit the nail on the head
Matt Jacobson: If you aren’t reusing something the zero coupling just seems like a lot of extra work
Samuel Taggart: basically anytime you are sending messages to the caller, you should be using zero-coupling
Samuel Taggart: or you could also use self-addressed messages
Scott Doyle: are the comments also a part of the saved presentation?
Samuel Taggart: see Allen’s presentation at the recent eCLA for more on the self-addressed messages
David Harden: great! Thanks Sam and Matt
Scott Doyle: There were a significant amount of additional links within the chat comments
David Harden: Great Presentation BTW
Samuel Taggart: I have no idea about the comments. you might see if you can copy them and paste them
Scott Doyle: and additional overall information, as well
Samuel Taggart: I certainly hope they do get saved.
Samuel Taggart: I think they would be very useful
Scott Doyle: agreed
Fabiola De la Cueva (Fab): http://delacor.com/
Samuel Taggart: I was able to copy what was available in the chat window, but apparently only a certain number of lines are displayed. I’m missing the earlier comments
Fabiola De la Cueva (Fab): all the DQMH videos are at: bit.ly/DelacorQMH
Fabiola De la Cueva (Fab): @Mehul, do you know if the comments get saved with the webinar as well?
Fabiola De la Cueva (Fab): I believe they do
Mehul Shah, Multimedia Specialist: @Fabiola yes they do
Mehul Shah, Multimedia Specialist: I can send them to you and Sam
Samuel Taggart: perfect
Samuel Taggart: that would be great
Scott Doyle: excellent, thanks again. have a great day everyone
Mehul Shah, Multimedia Specialist: alright everyone, any last minute questions before I close the room?
Evgeny Fomin: Please chare the comments with all of us!