{"id":401,"date":"2013-06-04T10:00:51","date_gmt":"2013-06-04T15:00:51","guid":{"rendered":"http:\/\/labviewjournal.com\/?p=401"},"modified":"2019-08-14T12:06:02","modified_gmt":"2019-08-14T17:06:02","slug":"humility-3","status":"publish","type":"post","link":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/","title":{"rendered":"Humility and Better Programming, Part 3"},"content":{"rendered":"<blockquote><p>A programmer who truly sees his program as an extension of his own ego is not going to be trying to find all the errors in that program. On the contrary, he is going to be trying to prove that the program is correct\u2014even if this means the oversight of errors which are monstrous to another eye.<\/p>\n<p>\u2014 <a href=\"https:\/\/amzn.to\/2YKb9w6\"><strong>Gerald Weinberg. The Psychology of Computer Programming<\/strong><\/a><\/p><\/blockquote>\n<p>In this book in 1971, Dr. Weinberg described the concept of \u201cegoless programming\u201d, using a cooperative approach to programming.\u00a0 One of the main points of his book is that programming is better with teams that share their ownership of code.\u00a0 I didn\u2019t know this style of development had a name, but this is what we\u2019ve practiced on the LabVIEW R&amp;D team since the beginning.\u00a0 The more modern \u201cagile\u201d software development methods have their roots in egoless programming.<\/p>\n<p>There are a bunch of great anecdotes in the book, many of which are still relevant 40 years later.\u00a0 Here\u2019s a great story that helps explain more about egoless programming\u2026<\/p>\n<p><!--more--><\/p>\n<p>A programmer (\u201cBill\u201d) was responsible for writing an important section of code at the heart of a simulation system.\u00a0 This section of code was a loop that consisted of just thirteen lines of machine code.<\/p>\n<blockquote><p>\u2026when he finally reached the point of some confidence in it, he began looking for a critic\u2014the standard practice in this programming group.<\/p>\n<p>Bill found Marilyn B. willing to peruse his code in exchange for his returning the favor. This was nothing unusual in this group; indeed, nobody would have thought of going on the machine without such scrutiny by a second party.<\/p>\n<p>\u2026 His value system, when it came to programming, dictated that secretive, possessive programming was bad and that open, shared programming was good. Errors that might be found in code he had written\u2014not &#8220;his&#8221; code, for that, terminology was not used here\u2014were simply facts to be exposed to investigation with an eye to future improvement, not attacks on his person.<\/p>\n<p>In this particular instance, Bill had been having one of his &#8220;bad programming days.&#8221; As Marilyn worked and worked over the code\u2014as she found one error after another\u2014he became more and more amused, rather than more and more defensive as he might have done had he been trained as so many of our programmers are. Finally, he emerged from their conference announcing to the world the startling fact that Marilyn had been able to find seventeen bugs in only thirteen statements. He insisted on showing everyone who would listen how this had been possible\u2026<\/p>\n<p>Marilyn, at the same time, did not feel any false confidence in her own work on the problem, for\u2014she reasoned correctly\u2014-where there had been seventeen errors, there were probably a few more\u2026 while Bill was giving everyone an enormous laugh at his expense, Marilyn and others managed to find three more errors before the day was over.<\/p>\n<p>As an epilogue to this incident, it should be noted that when this code was finally put on the computer, no further errors were found, in spite of the most diabolical testing possible. In fact, this simulator was put into use in more than a dozen installations for real-time operations, and over a period of at least nine years no other errors were ever found. How different might have been the story had Bill felt that each error found in that code was a wound in his pride\u2014an advertisement of his stupidity.<\/p>\n<p>\u2014 <a href=\"https:\/\/amzn.to\/2YKb9w6\"><strong>Gerald Weinberg. The Psychology of Computer Programming<\/strong><\/a><\/p><\/blockquote>\n<p>So how do you put this into everyday practice?\u00a0 I can sum it up this way\u2026 Don\u2019t work in isolation.\u00a0 Here\u2019s one major theme\u2026<\/p>\n<h2>Review your code with others.<\/h2>\n<p>This is the way we do it in LabVIEW R&amp;D.\u00a0 Approximately* all of the code that anyone submits to our source code control system is reviewed by at least one other person.\u00a0 (* There are exceptions for fixing misspellings in comments and other simple changes.)<\/p>\n<p>It takes courage to bare your code to others. You have to be honest and not hide anything. It seems there\u2019s always code that could have been written and documented better, designs that could have been more elegant, and error checking that could have been cleaner, weighed against getting the feature or bug fixes done in a timely manner.\u00a0 But we do it anyway.\u00a0 Remember, we\u2019re reviewing code, not reviewing the person.\u00a0 It\u2019s not about your ego; it\u2019s about creating better software. \u00a0I know that in some organizations, this will be a big culture shift.<\/p>\n<p>Reviewing code has multiple benefits. \u00a0It builds stronger teams, which build stronger, more maintainable applications&#8230;<\/p>\n<ul>\n<li>A reviewer is more likely to see bugs than I am.\u00a0 Sometimes you are so familiar with your code that you are blind to obvious bugs.\u00a0 There\u2019s also the benefit that more bugs are caught early, before they are submitted to the main branch in the source code control repository.<\/li>\n<li>It helps ensure that my code is readable and explainable.\u00a0 I like to sit with my reviewer and go through the code with her.\u00a0 If I have trouble explaining it, there\u2019s a good chance the code isn\u2019t written well and I might need to rethink it.\u00a0 And on more than one occasion, I\u2019ll realize I have a bug in my own code when I see that the code isn\u2019t matching my verbal explanation.\u00a0 Other people like to have their code reviewed \u201coffline\u201d\u2014\u201cHey reviewer, here\u2019s my code.\u00a0 Get back to me.\u201d\u00a0 This forces you to document it well enough that the reviewer will understand it without additional explanation.<\/li>\n<li>Someone else learns something about the code.\u00a0 If the author of a change goes on vacation and I have a question about the code, I can try to find the person who reviewed the changes.\u00a0 They may not know the code as deeply as the author, but they might be able to explain the code well enough for me to figure out my question.<\/li>\n<li>It encourages reuse.\u00a0 A reviewer might know that the team already has a function that does what you\u2019re trying to submit.\u00a0 Or, I might remember that I reviewed a piece of code that\u2019s just like a function I need now.\u00a0 I can find and reuse the code, rather than write my own.<\/li>\n<li>It\u2019s a great way for the team to learn good coding practices and style.\u00a0 This is how new programmers learn the team\u2019s style.\u00a0 A reviewer can remind you if the style guidelines call for a particular connector pattern, error handling scheme, or documentation style.<\/li>\n<li>The teaching works both ways.\u00a0 A junior developer can learn from an experienced reviewer.\u00a0 A senior developer can learn new tricks from a junior reviewer.\u00a0 (And for completeness, a senior developer may want to find a senior reviewer if a bug fix is particularly difficult or mission-critical, and it\u2019s usually not a great idea to have a novice developer use a novice reviewer.)<\/li>\n<li>It forces developers to have at least a few social skills. \ud83d\ude09<\/li>\n<\/ul>\n<p>One more comment on reviewing <span style=\"text-decoration: underline;\"><em>all<\/em><\/span> code\u2026\u00a0 I\u2019ve heard of teams that only review difficult or problematic (buggy) code.\u00a0 A major downside of this is that junior engineers only learn from difficult and buggy code\u2014i.e., they are learning from the poorest examples. \u00a0Conversely, I&#8217;ve heard of developers who hide the ugly code, and just want their best code reviewed. \u00a0Reviewing all code means everyone gets a more balanced view of the quality of the project.<\/p>\n<p>For more on code reviews, see our <a href=\"https:\/\/stravaro.com\/blog\/lvjournal\/2012\/08\/labview-code-review-session-at-niweek\/\" target=\"_blank\" rel=\"noopener noreferrer\">NIWeek 2012 presentation<\/a>, which we plan to present again at <a href=\"http:\/\/ni.com\/niweek\" target=\"_blank\" rel=\"noopener noreferrer\">NIWeek 2013<\/a>.<\/p>\n<p>More ideas coming up in <a title=\"Humility and Better Programming, Part 4\" href=\"https:\/\/stravaro.com\/blog\/lvjournal\/2013\/06\/humility-4\/\">part 4<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A programmer who truly sees his program as an extension of his own ego is not going to be trying to find all the errors in that program. On the contrary, he is going to be trying to prove that the program is correct\u2014even if this means the oversight of errors which are monstrous to [&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":[15,17,23,38,46,56,57,64,71],"class_list":["post-401","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","tag-books","tag-character","tag-complexity","tag-humility","tag-maintainability","tag-programming-2","tag-psychology","tag-simplicity","tag-weinberg"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Humility and Better Programming, Part 3 - 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\/2013\/06\/humility-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Humility and Better Programming, Part 3 - LabVIEW Field Journal Archives\" \/>\n<meta property=\"og:description\" content=\"A programmer who truly sees his program as an extension of his own ego is not going to be trying to find all the errors in that program. On the contrary, he is going to be trying to prove that the program is correct\u2014even if this means the oversight of errors which are monstrous to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/\" \/>\n<meta property=\"og:site_name\" content=\"LabVIEW Field Journal Archives\" \/>\n<meta property=\"article:published_time\" content=\"2013-06-04T15:00:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-14T17:06:02+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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/\"},\"author\":{\"name\":\"Brian\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#\\\/schema\\\/person\\\/5a7979adfffe497f72353515e7e4698b\"},\"headline\":\"Humility and Better Programming, Part 3\",\"datePublished\":\"2013-06-04T15:00:51+00:00\",\"dateModified\":\"2019-08-14T17:06:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/\"},\"wordCount\":1291,\"commentCount\":7,\"publisher\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/#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\":[\"books\",\"character\",\"complexity\",\"humility\",\"maintainability\",\"programming\",\"psychology\",\"simplicity\",\"Weinberg\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/\",\"url\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/\",\"name\":\"Humility and Better Programming, Part 3 - LabVIEW Field Journal Archives\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/#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\":\"2013-06-04T15:00:51+00:00\",\"dateModified\":\"2019-08-14T17:06:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/2013\\\/06\\\/humility-3\\\/#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\\\/2013\\\/06\\\/humility-3\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/stravaro.com\\\/lvjournal\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Humility and Better Programming, Part 3\"}]},{\"@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":"Humility and Better Programming, Part 3 - 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\/2013\/06\/humility-3\/","og_locale":"en_US","og_type":"article","og_title":"Humility and Better Programming, Part 3 - LabVIEW Field Journal Archives","og_description":"A programmer who truly sees his program as an extension of his own ego is not going to be trying to find all the errors in that program. On the contrary, he is going to be trying to prove that the program is correct\u2014even if this means the oversight of errors which are monstrous to [&hellip;]","og_url":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/","og_site_name":"LabVIEW Field Journal Archives","article_published_time":"2013-06-04T15:00:51+00:00","article_modified_time":"2019-08-14T17:06:02+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":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/#article","isPartOf":{"@id":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/"},"author":{"name":"Brian","@id":"https:\/\/stravaro.com\/lvjournal\/#\/schema\/person\/5a7979adfffe497f72353515e7e4698b"},"headline":"Humility and Better Programming, Part 3","datePublished":"2013-06-04T15:00:51+00:00","dateModified":"2019-08-14T17:06:02+00:00","mainEntityOfPage":{"@id":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/"},"wordCount":1291,"commentCount":7,"publisher":{"@id":"https:\/\/stravaro.com\/lvjournal\/#organization"},"image":{"@id":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/#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":["books","character","complexity","humility","maintainability","programming","psychology","simplicity","Weinberg"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/","url":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/","name":"Humility and Better Programming, Part 3 - LabVIEW Field Journal Archives","isPartOf":{"@id":"https:\/\/stravaro.com\/lvjournal\/#website"},"primaryImageOfPage":{"@id":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/#primaryimage"},"image":{"@id":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/#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":"2013-06-04T15:00:51+00:00","dateModified":"2019-08-14T17:06:02+00:00","breadcrumb":{"@id":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stravaro.com\/lvjournal\/2013\/06\/humility-3\/#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\/2013\/06\/humility-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/stravaro.com\/lvjournal\/"},{"@type":"ListItem","position":2,"name":"Humility and Better Programming, Part 3"}]},{"@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\/401","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=401"}],"version-history":[{"count":2,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/posts\/401\/revisions"}],"predecessor-version":[{"id":659,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/posts\/401\/revisions\/659"}],"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=401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/categories?post=401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stravaro.com\/lvjournal\/wp-json\/wp\/v2\/tags?post=401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}