{"id":82,"date":"2019-06-19T15:04:48","date_gmt":"2019-06-19T15:04:48","guid":{"rendered":"https:\/\/creosite.com\/?page_id=82"},"modified":"2020-06-13T15:33:39","modified_gmt":"2020-06-13T15:33:39","slug":"pro-e-programmers-speak-r20","status":"publish","type":"page","link":"https:\/\/creosite.com\/index.php\/programmers-speak\/pro-e-programmers-speak-r20\/","title":{"rendered":"Pro\/E Programmers Speak: R20"},"content":{"rendered":"\n<p>A year and a half ago I put together a list of personal comments found\nwithin the R18 Pro\/E compiled code. Pro\/E seems to be the only major\nsoftware application in the world that includes these comments in the\ncode distributed to customers, apparently other vendors usually remove\nthem.\n<\/p>\n\n\n\n<p>So, seems time to check on R20 and see what&#8217;s there. All the indented\nlines below are exact text from the R20 compiled code, extracted with\nthe Unix &#8216;strings&#8217; command. I&#8217;m also attaching the R18 comments, for\nanyone who didn&#8217;t read them at the time.\n<\/p>\n\n\n\n<p>Good to see all the familiar names are still there on R20: Lev, Piotr,\nAnton, Jatin, Konstantin, and Mike. You might think from this list that\nPTC programmers must be at least 80% Russian, but probably not, seems\nthe Russians are just more polite than other nationalities, they&#8217;re\nalways calling each other by name: &#8220;Please tell Piotr&#8221;, &#8220;Please tell\nKonstantin&#8221;, and so forth.\n<\/p>\n\n\n\n<p>On R20 there is a new person, Maxime:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Please tell Maxime\n<\/li><\/ul>\n\n\n\n<p>In a preliminary message I said Maxime was a woman, but since then I&#8217;ve\nbeen corrected, no, he&#8217;s a man. Maxime is just an English version of a\nRussian male name, Maksim.\n<\/p>\n\n\n\n<p>Although a lot of companies are nervous about publishing the names of\ntechnical people, worrying about headhunters, apparently not so PTC.\nWhy, you can even get the internal phone extension of a programmer:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Duplicated entity id %d found, please tell ET x5098.\n<\/li><\/ul>\n\n\n\n<p>There&#8217;s a regular flow of polite requests:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>update me please !\n<\/li><li>MAX_ALLOC_CHUNK is wrong, please fix\n<\/li><\/ul>\n\n\n\n<p>But sometimes politeness gets strained, perhaps even among the Russians:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Please yell at MIB\n<\/li><\/ul>\n\n\n\n<p>Why bother about all this stuff? Well, take this message in the R20\ncode:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Crashing ! Have a nice day \ud83d\ude42\n<\/li><\/ul>\n\n\n\n<p>If it was your Pro\/E session which was crashing, wouldn&#8217;t you like to\nknow? And the cheerful farewell message might just improve your mood.\n<\/p>\n\n\n\n<p>Now the experienced programmer has tricks to avoid a crash:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Filling data with complete NONSENSE just to avoid crash.\n<\/li><\/ul>\n\n\n\n<p>Although it&#8217;s not quite clear that this is an total solution for the end\nuser, who may find that his data has suddenly become complete nonsense.\n<\/p>\n\n\n\n<p>And there are other ways to avoid problems, even if you have to regress\nand be bad:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>failing, resorting to old bad behavior\n<\/li><\/ul>\n\n\n\n<p>Or how about this, as a message before you crash:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>bad end points!!! probably we will crash soon.\n<\/li><\/ul>\n\n\n\n<p>That might at least leave you time to fasten your seatbelt.\n<\/p>\n\n\n\n<p>Here&#8217;s another warning message which the end user might find informative:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>VERY bad inconsistency &#8211; further actions random\n<\/li><\/ul>\n\n\n\n<p>Would be good to know that, so when your input has no visible effect\non what is happening on the screen at least you know why, and you know\nit&#8217;s not you who is going crazy.\n<\/p>\n\n\n\n<p>At times there is frank bafflement:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>What did I forget?\n<\/li><li>I can&#8217;t work with NULL resource!\n<\/li><li>hey, I should never be called no more!\n<\/li><li>I have no idea what to do with position (%d)\n<\/li><li>GPU is outside; how the hell did we get here?\n<\/li><\/ul>\n\n\n\n<p>Or small triumphs:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>just found it, didn&#8217;t I ?\n<\/li><\/ul>\n\n\n\n<p>We&#8217;re all human, you or I might forget to close the door, a programmer\nhas similar problems:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Forgot to close it.\n<\/li><\/ul>\n\n\n\n<p>Some of the programming terms have very descriptive names:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>The heylistenpipe socket is %d\n<\/li><\/ul>\n\n\n\n<p>In programming as in life, crap happens:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>crappy input\n<\/li><\/ul>\n\n\n\n<p>And even worse:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>shit, flow line is NULL\n<\/li><\/ul>\n\n\n\n<p>Sounds like a sewer leak, perhaps, seems as if the flow line broke somewhere.\n<\/p>\n\n\n\n<p>Confusion may abound:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>say what?\n<\/li><li>GuessWhat\n<\/li><li>Mark what??\n<\/li><li>what &#8212; no input!?\n<\/li><li>I have no idea what to do with position (%d)\n<\/li><\/ul>\n\n\n\n<p>But still there&#8217;s a strong determination to succeed, keep  on trying:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>We still try it.\n<\/li><li>Longer new jump, but I think it is OK.\n<\/li><li>One piece loop ?? (Let&#8217;s see what happens&#8230;)\n<\/li><\/ul>\n\n\n\n<p>Things get crazy at times, just like in any other job:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>crazy surface\n<\/li><li>crazy geometry\n<\/li><li>crazy option string\n<\/li><li>Crazy visibility options\n<\/li><li>crazy param from entity param\n<\/li><\/ul>\n\n\n\n<p>And you might just have to depend on sheer luck:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>No luck finding another end edge.\n<\/li><li>illegal number %d in old ids. Good luck.\n<\/li><\/ul>\n\n\n\n<p>Not clear here, whether the &#8216;Good luck&#8217; message is for some fellow\nprogrammer, or for the end user. If it&#8217;s for the end user, would be\nnice to see it printed out on the screen too.\n<\/p>\n\n\n\n<p>These programmers can be pretty hard on each other at times, they can\nbe quite critical of each other&#8217;s work:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Stupid type\n<\/li><li>Stupid mode\n<\/li><li>Stupid value\n<\/li><li>Stupid input\n<\/li><li>Stupid parameter\n<\/li><li>stupid model type\n<\/li><li>Stupid param type\n<\/li><li>Stupid action type\n<\/li><li>Stupid column type\n<\/li><li>Stupid dialog type\n<\/li><\/ul>\n\n\n\n<p>Although there are some more polite comments:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>I think this function never works. OSH\n<\/li><\/ul>\n\n\n\n<p>It can be difficult to follow the train of thought:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>THERE ARE FOOLOWING BEND TABLES ASSOSIATED WITH PART :\\n\n<\/li><\/ul>\n\n\n\n<p>And things go bad too:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>bad call!\n<\/li><li>Bad value type !\n<\/li><li>Name is too bad.     [although this might be complimentary]\n<\/li><li>Bad pointers !!!\n<\/li><li>Bad select data !\n<\/li><li>selection looks bad\n<\/li><li>Bad entity selected !\n<\/li><li>called with bad stuff\n<\/li><li>about to produce bad cache.\n<\/li><li>So bad, I have to fail the slice.\n<\/li><li>Cannot recreate onesided surfaces &#8211; very bad error!!!\n<\/li><\/ul>\n\n\n\n<p>And bad can even be amazing:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Wow, really bad silhouette.\n<\/li><\/ul>\n\n\n\n<p>It&#8217;s true, sometimes you might not want to know just exactly everything\nthat can go wrong with the software you are using:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>corrupted data\n<\/li><li>corrupted info\n<\/li><li>corrupted item\n<\/li><li>Corrupted table!\n<\/li><li>corrupted entity\n<\/li><li>corrupted database\n<\/li><li>cache is corrupted.\n<\/li><li>pointer is corrupted.\n<\/li><li>Corrupted model list.\n<\/li><li>draft item is corrupted\n<\/li><li>Corrupted file database.\n<\/li><li>data corruption detected\n<\/li><li>Stack has been corrupted.\n<\/li><li>feature list is corrupted\n<\/li><li>encountered corrupted data\n<\/li><li>Component model is corrupted.\n<\/li><\/ul>\n\n\n\n<p>And corruption can get into the computer itself too:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Disc corrupted.\n<\/li><li>Memory corrupted.\n<\/li><\/ul>\n\n\n\n<p>Although sometimes a professional programmer can still keep that\npositive upbeat attitude:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Just corrupted feature list!\n<\/li><\/ul>\n\n\n\n<p>Why does everything get corrupted like this? Here&#8217;s one attempt to\nexplain:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>last user corrupted me\n<\/li><\/ul>\n\n\n\n<p>That sounds like a typical programmer, just blaming it all on the poor\nuser.\n<\/p>\n\n\n\n<p>You can hear a note of apology in some remarks:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>oops\n<\/li><li>oops!\n<\/li><li>oops, bad assumption\n<\/li><li>broken edge disappear from loop, oops!\n<\/li><li>is_chain_edges_closededge disappear from loop, oops!\n<\/li><li>**OOPS!!** hash = (%d), not due to collision resolution\n<\/li><\/ul>\n\n\n\n<p>Something can still be a problem on R20, just as on R18:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>!Something is not correct!\n<\/li><li>Something strange happened&#8230;\n<\/li><li>something fishy is going on!!!\n<\/li><li>msg_get() people have changed something again.\n<\/li><li>Something goes wrong with Pro\/E deregistering!\n<\/li><\/ul>\n\n\n\n<p>Although sometimes with a literary allusion:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Something wicked this way comes!       [Shakespeare]\n<\/li><\/ul>\n\n\n\n<p>And the long arm of the law can affect programming too:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Sorry, there are legal restrictions on arithmetic coding\n<\/li><\/ul>\n\n\n\n<p>Worth concluding with the last two lines from my R18 report, still there\nin the R20 code. A question from one programmer to another:\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 the 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>A year and a half ago I put together a list of personal comments found within the R18 Pro\/E compiled code. Pro\/E seems to be the only major software application in the world that includes these comments in the code distributed to customers, apparently other vendors usually remove them. So, seems time to check on &#8230; <a title=\"Pro\/E Programmers Speak: R20\" class=\"read-more\" href=\"https:\/\/creosite.com\/index.php\/programmers-speak\/pro-e-programmers-speak-r20\/\" aria-label=\"Read more about Pro\/E Programmers Speak: R20\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":46,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-82","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/pages\/82","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=82"}],"version-history":[{"count":2,"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/pages\/82\/revisions"}],"predecessor-version":[{"id":98,"href":"https:\/\/creosite.com\/index.php\/wp-json\/wp\/v2\/pages\/82\/revisions\/98"}],"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=82"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}