{"id":109910,"date":"2024-06-18T07:00:00","date_gmt":"2024-06-18T14:00:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/oldnewthing\/?p=109910"},"modified":"2024-06-18T09:26:07","modified_gmt":"2024-06-18T16:26:07","slug":"20240618-00","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20240618-00\/?p=109910","title":{"rendered":"The time smart quotes prevented the entire Office division from committing code"},"content":{"rendered":"<p>A colleague told a story of how he once broke the entire Office division&#8217;s ability to check in code because he accidentally checked in a syntax error to the script that is used to verify that your proposed change has satisfied all the pre-submit requirements such as passing static analysis and unit testing.\u00b9<\/p>\n<p>Since the script was now failing, all attempts to check in code were being blocked, including the attempts to fix the script itself!<\/p>\n<p>In order to get things working again, they had to find someone who had access to the console of the machine that runs the validation tests and manually edit the script so that the script repair check-in would pass its own validation.<\/p>\n<p>Just another example of <a title=\"The Night Watch\" href=\"https:\/\/www.usenix.org\/system\/files\/1311_05-08_mickens.pdf\"> I HAVE NO TOOLS BECAUSE I&#8217;VE DESTROYED MY TOOLS WITH MY TOOLS<\/a>.<\/p>\n<p>\u00b9 The error was caused by <a title=\"Smart quotes: The hidden scourge of text meant for computer consumption\" href=\"https:\/\/devblogs.microsoft.com\/oldnewthing\/20090225-00\/?p=19033\"> smart quotes being used by mistake instead of straight quotes<\/a>. He doesn&#8217;t know how they snuck in, and the two styles of quotation marks were sufficiently similar that it eluded everyone&#8217;s notice.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Breaking your tools with your tools.<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[26],"class_list":["post-109910","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-other"],"acf":[],"blog_post_summary":"<p>Breaking your tools with your tools.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/109910","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=109910"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/109910\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=109910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=109910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=109910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}