{"id":323,"date":"2012-06-05T09:30:00","date_gmt":"2012-06-05T14:30:00","guid":{"rendered":"http:\/\/labviewjournal.com\/?p=323"},"modified":"2019-07-30T17:39:01","modified_gmt":"2019-07-30T22:39:01","slug":"maintaining-state-4","status":"publish","type":"post","link":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/","title":{"rendered":"Maintaining State Information in LabVIEW Applications, Part 4"},"content":{"rendered":"<p>Let\u2019s summarize where we are so far\u2026<\/p>\n<p>In <a href=\"http:\/\/labviewjournal.com\/2012\/02\/maintaining-state-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">part 1<\/a>, we started talking about VIs that maintain state information from one call to the next.\u00a0 I want to clarify that there are two different kinds of such VIs.\u00a0 Sometimes you want global state\u2014no matter where the VI is called anywhere in an application, you want its state to be shared among calls.\u00a0 This is what a <a href=\"http:\/\/labviewjournal.com\/2011\/08\/race-conditions-and-functional-global-variables-in-labview\/\" target=\"_blank\" rel=\"noopener noreferrer\">functional global variable<\/a> is.\u00a0 FGVs are, in general, not reentrant, to protect against parallel access to the global data.\u00a0 In part 1, I introduced a different flavor, where you don\u2019t really want to share data across all calls; you wanted each call to have its own state, but you wanted each instance to maintain state between calls.<\/p>\n<p>In <a href=\"http:\/\/labviewjournal.com\/2012\/05\/maintaining-state-information-in-labview-applications-part-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">part 2<\/a>, we learned why VIs like this have to use preallocated clones, not shared clones. But what are the downsides of always using preallocated clones? What does \u201creduces memory usage\u201d mean?<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/vi-properties-shared.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-310 size-full\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/vi-properties-shared.png?resize=389%2C270&#038;ssl=1\" alt=\"\" width=\"389\" height=\"270\" srcset=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/vi-properties-shared.png?w=389&amp;ssl=1 389w, https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/vi-properties-shared.png?resize=300%2C208&amp;ssl=1 300w\" sizes=\"auto, (max-width: 389px) 100vw, 389px\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<p>Suppose we have a calling hierarchy like this, where the VIs \u201cB&#8217;\u201d and \u201cC\u201d are reentrant with preallocated clones\u2026<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-317 aligncenter\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/BC.png?resize=220%2C190&#038;ssl=1\" alt=\"\" width=\"220\" height=\"190\" \/><\/p>\n<p>There is one clone of B and three clones of C in memory.\u00a0 (There\u2019s actually a second copy of B and a fourth copy of C in memory\u2014the original VIs, even though they won\u2019t be run in this case.)<\/p>\n<p>What if I want to make a second call to B?\u00a0 Now my hierarchy looks like this\u2026<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-319 size-full\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/ABC.png?resize=441%2C188&#038;ssl=1\" alt=\"\" width=\"441\" height=\"188\" srcset=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/ABC.png?w=441&amp;ssl=1 441w, https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/ABC.png?resize=300%2C128&amp;ssl=1 300w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/p>\n<p>We can see here that preallocation is recursive.\u00a0 Two copies of B means six copies of C.\u00a0 Imagine that you need to add more calls to B or C in your application, and you can see that the number of VIs starts to grow exponentially\u2026<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/ABC-Big.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-321 size-full\" src=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/ABC-Big.png?resize=817%2C209&#038;ssl=1\" alt=\"\" width=\"817\" height=\"209\" srcset=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/ABC-Big.png?w=817&amp;ssl=1 817w, https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/ABC-Big.png?resize=300%2C77&amp;ssl=1 300w, https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2012\/05\/ABC-Big.png?resize=768%2C196&amp;ssl=1 768w\" sizes=\"auto, (max-width: 817px) 100vw, 817px\" \/><\/a><\/p>\n<p>As this scales to thousands of VI clones, at some point you have to make a time vs. space tradeoff.\u00a0 Preallocated clones give you the maximum parallelism without spending runtime processing on allocating more clones\u2014but at the cost of memory.\u00a0 Given that your computer has a small, finite number of cores it can use, is it worth it?<\/p>\n<p>The answer for you depends on your application, but what if you could have the benefits of shared clone reentrancy, and still maintain state per call?\u00a0 We\u2019ll look at that in the <a href=\"https:\/\/stravaro.com\/blog\/lvjournal\/2012\/06\/maintaining-state-5\/\">next post, part 5<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let\u2019s summarize where we are so far\u2026 In part 1, we started talking about VIs that maintain state information from one call to the next.\u00a0 I want to clarify that there are two different kinds of such VIs.\u00a0 Sometimes you want global state\u2014no matter where the VI is called anywhere in an application, you want [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":128,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_post_was_ever_published":false},"categories":[4],"tags":[20,34,41,59,65],"class_list":["post-323","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","tag-clones","tag-fgv","tag-labview","tag-reentrancy","tag-state"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Maintaining State Information in LabVIEW Applications, Part 4 - LabVIEW Field Journal Archives<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Maintaining State Information in LabVIEW Applications, Part 4 - LabVIEW Field Journal Archives\" \/>\n<meta property=\"og:description\" content=\"Let\u2019s summarize where we are so far\u2026 In part 1, we started talking about VIs that maintain state information from one call to the next.\u00a0 I want to clarify that there are two different kinds of such VIs.\u00a0 Sometimes you want global state\u2014no matter where the VI is called anywhere in an application, you want [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/\" \/>\n<meta property=\"og:site_name\" content=\"LabVIEW Field Journal Archives\" \/>\n<meta property=\"article:published_time\" content=\"2012-06-05T14:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-07-30T22:39:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"100\" \/>\n\t<meta property=\"og:image:height\" content=\"100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Brian\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brian\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/\"},\"author\":{\"name\":\"Brian\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#\\\/schema\\\/person\\\/5a7979adfffe497f72353515e7e4698b\"},\"headline\":\"Maintaining State Information in LabVIEW Applications, Part 4\",\"datePublished\":\"2012-06-05T14:30:00+00:00\",\"dateModified\":\"2019-07-30T22:39:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/\"},\"wordCount\":381,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2011\\\/07\\\/brian_square.png?fit=100%2C100&ssl=1\",\"keywords\":[\"clones\",\"FGV\",\"LabVIEW\",\"reentrancy\",\"state\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/\",\"url\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/\",\"name\":\"Maintaining State Information in LabVIEW Applications, Part 4 - LabVIEW Field Journal Archives\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2011\\\/07\\\/brian_square.png?fit=100%2C100&ssl=1\",\"datePublished\":\"2012-06-05T14:30:00+00:00\",\"dateModified\":\"2019-07-30T22:39:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2011\\\/07\\\/brian_square.png?fit=100%2C100&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2011\\\/07\\\/brian_square.png?fit=100%2C100&ssl=1\",\"width\":100,\"height\":100,\"caption\":\"\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2012\\\/06\\\/maintaining-state-4\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Maintaining State Information in LabVIEW Applications, Part 4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#website\",\"url\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/\",\"name\":\"LabVIEW Field Journal Archives\",\"description\":\"Advanced LabVIEW with the NI Field Architects\",\"publisher\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#organization\",\"name\":\"Stravaro, LLC\",\"url\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2014\\\/10\\\/Twitter_Logo_512-54543176_site_icon.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/stravaro.com\\\/lvjournal\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2014\\\/10\\\/Twitter_Logo_512-54543176_site_icon.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"Stravaro, LLC\"},\"image\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#\\\/schema\\\/person\\\/5a7979adfffe497f72353515e7e4698b\",\"name\":\"Brian\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g\",\"caption\":\"Brian\"},\"sameAs\":[\"https:\\\/\\\/stravaro.com\\\/\"],\"url\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/author\\\/brian\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Maintaining State Information in LabVIEW Applications, Part 4 - LabVIEW Field Journal Archives","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/","og_locale":"en_US","og_type":"article","og_title":"Maintaining State Information in LabVIEW Applications, Part 4 - LabVIEW Field Journal Archives","og_description":"Let\u2019s summarize where we are so far\u2026 In part 1, we started talking about VIs that maintain state information from one call to the next.\u00a0 I want to clarify that there are two different kinds of such VIs.\u00a0 Sometimes you want global state\u2014no matter where the VI is called anywhere in an application, you want [&hellip;]","og_url":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/","og_site_name":"LabVIEW Field Journal Archives","article_published_time":"2012-06-05T14:30:00+00:00","article_modified_time":"2019-07-30T22:39:01+00:00","og_image":[{"width":100,"height":100,"url":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","type":"image\/png"}],"author":"Brian","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Brian","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/#article","isPartOf":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/"},"author":{"name":"Brian","@id":"https:\/\/stravaro.com\/lvjournal\/#\/schema\/person\/5a7979adfffe497f72353515e7e4698b"},"headline":"Maintaining State Information in LabVIEW Applications, Part 4","datePublished":"2012-06-05T14:30:00+00:00","dateModified":"2019-07-30T22:39:01+00:00","mainEntityOfPage":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/"},"wordCount":381,"commentCount":2,"publisher":{"@id":"https:\/\/stravaro.com\/lvjournal\/#organization"},"image":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","keywords":["clones","FGV","LabVIEW","reentrancy","state"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/","url":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/","name":"Maintaining State Information in LabVIEW Applications, Part 4 - LabVIEW Field Journal Archives","isPartOf":{"@id":"https:\/\/stravaro.com\/lvjournal\/#website"},"primaryImageOfPage":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/#primaryimage"},"image":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","datePublished":"2012-06-05T14:30:00+00:00","dateModified":"2019-07-30T22:39:01+00:00","breadcrumb":{"@id":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/#primaryimage","url":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","contentUrl":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","width":100,"height":100,"caption":""},{"@type":"BreadcrumbList","@id":"https:\/\/stravaro.com\/lvjournal\/2012\/06\/maintaining-state-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/stravaro.com\/lvjournal\/"},{"@type":"ListItem","position":2,"name":"Maintaining State Information in LabVIEW Applications, Part 4"}]},{"@type":"WebSite","@id":"https:\/\/stravaro.com\/lvjournal\/#website","url":"https:\/\/stravaro.com\/lvjournal\/","name":"LabVIEW Field Journal Archives","description":"Advanced LabVIEW with the NI Field Architects","publisher":{"@id":"https:\/\/stravaro.com\/lvjournal\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/stravaro.com\/lvjournal\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/stravaro.com\/lvjournal\/#organization","name":"Stravaro, LLC","url":"https:\/\/stravaro.com\/lvjournal\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stravaro.com\/lvjournal\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2014\/10\/Twitter_Logo_512-54543176_site_icon.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2014\/10\/Twitter_Logo_512-54543176_site_icon.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Stravaro, LLC"},"image":{"@id":"https:\/\/stravaro.com\/lvjournal\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/stravaro.com\/lvjournal\/#\/schema\/person\/5a7979adfffe497f72353515e7e4698b","name":"Brian","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b65e73e808770fb97191694e008a472c044ef97914aa71f86b7ce1987dd0bf3?s=96&d=mm&r=g","caption":"Brian"},"sameAs":["https:\/\/stravaro.com\/"],"url":"https:\/\/stravaro.com\/lvjournal\/author\/brian\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/stravaro.com\/lvjournal\/wp-content\/uploads\/sites\/2\/2011\/07\/brian_square.png?fit=100%2C100&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/posts\/323","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/comments?post=323"}],"version-history":[{"count":3,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/posts\/323\/revisions"}],"predecessor-version":[{"id":647,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/posts\/323\/revisions\/647"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/media\/128"}],"wp:attachment":[{"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/media?parent=323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/categories?post=323"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/tags?post=323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}