{"id":85,"date":"2019-06-19T15:07:48","date_gmt":"2019-06-19T15:07:48","guid":{"rendered":"https:\/\/creosite.com\/?page_id=85"},"modified":"2020-06-13T15:34:02","modified_gmt":"2020-06-13T15:34:02","slug":"pro-e-programmers-speak-in-2000i2","status":"publish","type":"page","link":"https:\/\/creosite.com\/index.php\/programmers-speak\/pro-e-programmers-speak-in-2000i2\/","title":{"rendered":"Pro\/E Programmers Speak in 2000i2"},"content":{"rendered":"\n<p>Back on R18, and again on R20, I collected and distributed some of\nthe informal programmer remarks included in the Pro\/E executable code.\nThese aren&#8217;t the formal comments in a computer program, which a\ncompiler will ignore. But the spontaneous personal comments of the\npeople writing the code. PTC seems to be the only major software vendor\nthat allows these kinds of personal comments in the released code, all\nthe other software vendors carefully remove them.\n<\/p>\n\n\n\n<p>Wondered if I&#8217;d bother to check again on 2000i2 (R22). But right away I\nfound this new comment:\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/images\/loony.gif\" alt=\"\"\/><\/figure>\n\n\n\n<p>Yep, those are the exact words burned into every CD of Pro\/E 2000i2\ndistributed to all PTC customers worldwide (use &#8216;strings&#8217; and &#8216;grep&#8217; to\nfind them, in Unix).\n<\/p>\n\n\n\n<p>Well, after that, wouldn&#8217;t be human not to look for more. Just one\nadditional benefit of being a PTC customer, you can sit alongside the\nprogrammers as they work, get to know them, listen to their thoughts.\nAll the indented lines below come right off the CD, everyone who has\n2000i2 has them, right on the CD, in the executeable itself.\n<\/p>\n\n\n\n<p>Computer users usually have to interface with customer support to\nidentify problems, and rarely get to talk with the programmers\nthemselves. But in the Pro\/E code, Konstantin has always been an\nimportant figure:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Please tell Konstantin\n<\/li><\/ul>\n\n\n\n<p>and\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Please complain to Konstantin<\/li><\/ul>\n\n\n\n<p>However now at last we get his full name, and internal extension number\nat PTC:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>! Author: Konstantin Ignatiev, x6885\n<\/li><\/ul>\n\n\n\n<p>So, why bother with customer support, call Konstantin directly:\n<\/p>\n\n\n\n<p>Entire new model there of customer support. As long as the customers\ncan get the names and phone numbers of the programmers in the CD,\nwhy bother to call customer support? Just deal direct with the\nprogrammers.\n<\/p>\n\n\n\n<p>Programming may sound rather a dull job, solitary work at the keyboard,\nbut it has its exciting moments, rating as many as 6 exclamation marks\neach:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>!!! Files Are Different !!!\n<\/li><li>!!! Mass Props Are Different !!!\n<\/li><li>!!! Line Counts Are Different !!!\n<\/li><\/ul>\n\n\n\n<p>And many more routine excitements, with from one to three exclamation\nmarks each:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>UNKNOWN !!!\n<\/li><li>impossible!\n<\/li><li>Big Trouble!\n<\/li><li>zero grid size!\n<\/li><li>The model is gone!\n<\/li><li>node array is junk!\n<\/li><li>part rolled to nothing!\n<\/li><li>Some points disappeared!\n<\/li><li>could not swap diagonal!!!\n<\/li><li>unknown coordinate system type !!!\n<\/li><li>Assembly did not contain any members!\n<\/li><li>Cannot recreate onesided surfaces &#8211; very bad error!!!\n<\/li><li>Warning: retrieved complex entry pointing to nothing!\n<\/li><\/ul>\n\n\n\n<p>There can be serious problems, and even horrible errors, programming\nis certainly not for the timid:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>We have serious retrieval problems here.<br>\na horrible error occured (feat id = %d) !!!\n<\/li><\/ul>\n\n\n\n<p>The very worst of all fears can strike:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>pat rec is neither leader nor member &#8211; death!\n<\/li><\/ul>\n\n\n\n<p>How can you know whom or what to trust:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>DO NOT RELY ON THIS!\n<\/li><\/ul>\n\n\n\n<p>And it&#8217;s hard for any engineer to learn to stop, to quit, to accept\na less than perfect solution:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Although buffers can work, we have to stop.\n<\/li><\/ul>\n\n\n\n<p>Often people are just asking, just as if they were sitting together\nat a workstation figuring out a problem, or just talking to themselves:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Who put NULL on the oper stack?!\n<\/li><li>you mean we don&#8217;t have a dwg view?\n<\/li><\/ul>\n\n\n\n<p>More questions abound:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>say what?\n<\/li><li>Mark what??\n<\/li><li>What did I forget?\n<\/li><li>how did we get here?\n<\/li><li>What brought us here?\n<\/li><li>How did skamp #%d id %d get denied?\n<\/li><\/ul>\n\n\n\n<p>Confusion can be rampant:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>What ?!\n<\/li><li>crazy ids!\n<\/li><li>what &#8212; no input!?\n<\/li><li>index is not supposed to be %d\n<\/li><li>Negative diameter is too weird for me.\n<\/li><li>no drawing, process asm, I&#8217;m confused!\n<\/li><li>Somehow a duplicate node was inserted!\n<\/li><li>Got regen error %d, but I&#8217;m not implemented yet\n<\/li><\/ul>\n\n\n\n<p>There are cries for help:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Fix me!!!\n<\/li><\/ul>\n\n\n\n<p>And also requests and commands:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>don&#8217;t touch this!\n<\/li><li>Possible memory leak! Fix it!\n<\/li><li>tsk tsk, select same line please!\n<\/li><\/ul>\n\n\n\n<p>Say, &#8220;tsk, tsk&#8221;, that might be rather fun to see in the official\nerror messages. Sort of a reprimand, but light hearted.\n<\/p>\n\n\n\n<p>Now people, even programmers, do make mistakes:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>oops\n<\/li><li>duh?\n<\/li><li>arghh!\n<\/li><li>oops, bad assumption\n<\/li><li>oh, ignominy! [sounds like Shakespeare]\n<\/li><li>Woops, this shouldn&#8217;t happen\n<\/li><\/ul>\n\n\n\n<p>And there are thoughtful reflections on the intricacies of software:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>we should not get an error at this point\n<\/li><li>we should have written the code to avoid this\n<\/li><\/ul>\n\n\n\n<p>Although sometimes the strictly professional tone is absent:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>It&#8217;s already in the list, silly\n<\/li><li>This is the crap you have to do to be able to use ugc_open_stream_input()\n<\/li><\/ul>\n\n\n\n<p>If you were a paying customer, and were trying to copy a layer, you\nprobably wouldn&#8217;t want to get this comment:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Stupid attempt to copy a layer.\n<\/li><\/ul>\n\n\n\n<p>But between themselves, these programmers seem to take a very direct\nand frank approach to commenting on each other&#8217;s work:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Stupid shake.\n<\/li><li>Stupid value: %d\n<\/li><li>is a stupid function\n<\/li><li>Stupid param type %d\n<\/li><li>Stupid value %d passed.\n<\/li><li>Stupid problem naming zone feat!\n<\/li><li>Stupid input value in usr_input_parameter().\n<\/li><\/ul>\n\n\n\n<p>Sorrow can strike, even in a form known to many a computer user:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Boo hoo, no backup!\n<\/li><\/ul>\n\n\n\n<p>And you might sometimes just abandon hope:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>GUESSING&#8230;. That&#8217;s it &#8211; I&#8217;m giving up!\n<\/li><\/ul>\n\n\n\n<p>But then, occasionally, there are reports of success:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>We get here after all &#8211; HMR\n<\/li><li>Correct handling of swept blend tangents, finally!\n<\/li><\/ul>\n\n\n\n<p>Somehow fishing seems often on the minds of PTC programmers:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>fishy\n<\/li><li>fishy incoming handle\n<\/li><li>something fishy is going on!!!\n<\/li><li>called with fishy banner line %s\n<\/li><\/ul>\n\n\n\n<p>Pro\/E makes extensive use of memory, more than most other applications,\nand with a computer rebooting is the only way to clean up memory. These\nfollowing comments seem to show the programmers see many possible\nmemory problems:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Memory leakage!\n<\/li><li>Memory corrupted.\n<\/li><li>Memory overwritten\n<\/li><li>Memory leak is possible!\n<\/li><li>memory allocation failure.\n<\/li><li>Memory corruption detected.\n<\/li><li>Memory overwrite may result.\n<\/li><\/ul>\n\n\n\n<p>Sometimes a customer calling PTC Customer Service may wonder if they\nare even speaking the same language. The customer says, &#8220;I had a\ncrash&#8221;. And the Customer Service rep. says, &#8220;Ah, you had an unexpected\nexit&#8221;.  The customer says, &#8220;Well, no, actually I had a crash&#8221;. And\nCustomer Service says, &#8220;No, what you&#8217;re saying is, you had an\nunexpected exit&#8221;.  And the customer says, &#8220;No! That&#8217;s not what I&#8217;m\nsaying at all! I had a crash, C-R-A-S-H!&#8221;.\n<\/p>\n\n\n\n<p>And so the conversation continues. Well, what do the programmers say?\nDo they speak the same language as the customer, or do they speak the\nsame language as Customer Service? The evidence is totally conclusive.\nIn all the 2000i2 compiled code, there is not a single mention of\n&#8216;unexpected exit&#8217;. While crashes occur often, and in many forms:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Crash\n<\/li><li>CRASH\n<\/li><li>CRASH!!!\n<\/li><li>Forced crash.\n<\/li><li>crashing on bad entity.\n<\/li><li>Crashing to avoid infinite loop\n<\/li><li>crash_on_exit() called: look at trail.\n<\/li><\/ul>\n\n\n\n<p>That really doesn&#8217;t sound good, crash_on_exit, if it&#8217;s a function you\nhope you don&#8217;t see it called on you. Although sometimes it&#8217;s possible\nto survive an imminent crash:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Continuing from a crash condition !\n<\/li><\/ul>\n\n\n\n<p>Or to work around a possible crash:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>should not happen: filling in_norm to avoid crash\n<\/li><\/ul>\n\n\n\n<p>Would be nice to have these two push buttons around, for use when\nneeded, especially the second one:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>PushButtonCrash\n<\/li><li>PushButtonDontCrash\n<\/li><\/ul>\n\n\n\n<p>But also apparently sometimes you just take your chances, sometimes you\ncrash and sometimes you don&#8217;t:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>routine %s &#8211; crashing\n<\/li><li>routine %s &#8211; not crashing&#8230;\n<\/li><\/ul>\n\n\n\n<p>Anyway, if Customer Service would just simply abandon entirely their\nuse of &#8216;unexpected exit&#8217;, and just say &#8216;crash&#8217;, like the paying\ncustomers and like the programmers, then communcation between all\nthree parties might be smoother.\n<\/p>\n\n\n\n<p>Time now to end yet another installment of PTC programmer remarks.\nProbably best to conclude with these two lines, which I quoted before,\nfor R18 and again for R20. The question:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>how could we have survived this?\n<\/li><\/ul>\n\n\n\n<p>And from the heart of the code this affirmative answer:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>But we created it!\n<\/li><\/ul>\n\n\n\n<addres>\n\u00a9 Peter Nurkse<br>\nSun Microsystems<br>\n<\/addres>\n","protected":false},"excerpt":{"rendered":"<p>Back on R18, and again on R20, I collected and distributed some of the informal programmer remarks included in the Pro\/E executable code. These aren&#8217;t the formal comments in a computer program, which a compiler will ignore. But the spontaneous personal comments of the people writing the code. PTC seems to be the only major &#8230; <a title=\"Pro\/E Programmers Speak in 2000i2\" class=\"read-more\" href=\"https:\/\/creosite.com\/index.php\/programmers-speak\/pro-e-programmers-speak-in-2000i2\/\" aria-label=\"Read more about Pro\/E Programmers Speak in 2000i2\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":46,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-85","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/pages\/85","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/comments?post=85"}],"version-history":[{"count":9,"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/pages\/85\/revisions"}],"predecessor-version":[{"id":589,"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/pages\/85\/revisions\/589"}],"up":[{"embeddable":true,"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/pages\/46"}],"wp:attachment":[{"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/media?parent=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}