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/view/p/lang/en/nid/213286

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-application-development-with-dqmh/

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/Delacor-Toolkits-Discussions/bd-p/7120

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/LabVIEW-Development-Best/Object-Oriented-Design-Patterns-Technical-Manual-and-Exercises/ta-p/3507995

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/Example-Program-Drafts/Applying-Common-Object-Oriented-OO-Design-Patterns-to-LabVIEW/ta-p/3510571

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-generic-networking-module/

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/NISystemsEngineering/AsynchronousMessageCommunication

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-library/webcasts/ to watch them soon after they are done.

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-dqmh-2/

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/documentation/dqmh-html/DQMHDocumentation.html?AddingaNewDQMHModulefromaCustomT.html

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-dqmh-4-0-beta/

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-library/webcasts/

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/documentation/dqmh-html/DQMHDocumentation.html

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/web/index.cfm?PKWebId=0x455250001

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-library/webcasts/ to watch them soon after they are done.

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-dqmh-2/

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/documentation/dqmh-html/DQMHDocumentation.html?AddingaNewDQMHModulefromaCustomT.html

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-dqmh-4-0-beta/

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-library/webcasts/

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/documentation/dqmh-html/DQMHDocumentation.html

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!