
PTC estas internacia kompanio kiu pioniras en la kreado de programaro por parametrika perkomputila aspektigado (
Interalie, mia aŭto, „Hyundai i20”, estis desegnita uzante la programon, kiun mi helpis disvolvi.
Mi laboris en departemento respondeca pri la funkcio „Family Table” („Familia Tabelo”). Ĉi tiu funkcio ebligas al uzantoj krei plurajn variaĵojn de unuopa peco baziĝante sur „baza” projekto kaj listo de ŝanĝoj konservitaj en tabelo. Ekzemple, aŭto povas esti ekipita per pluraj diversaj motoroj. Kutime, oni kreas bazan projekton de la aŭto, kaj poste la projektisto aldonas tabelon, kiu specifas la diferencojn inter la modeloj, — ekzemple, „kiun motor-desegnon ŝargi”, „kie la motor-muntadoj devas moviĝi rilate al la ĉasio”, „kiajn ŝanĝojn necesas en la transdonsistemo”, ktp. Ĉi tiu tabelo nomiĝas „Family Table”. Uzante la bazan projekton kaj la enskribojn en la „Family Table”, estas multe pli facile kaj rapide krei tutan familion de similaj modeloj, — tio estas, pli facile ol krei apartajn 3D-desegnaĵojn por ĉiu modelo ekde nulo, eĉ se la diferenco estas nur unu sola riglilo.
La menciita juvelisto uzis la „Family Table” por determini la nombron de diamantoj, kiuj estu egale distribuitaj ĉirkaŭ ringo, laŭ la diametro de la ringo: ju pli larĝa estas la ringo, des pli da diamantoj povus esti fiksitaj ĉe ĝia rando.

Bildkredito: PTC.
Laborsperto
- Pozicio: Programisto.
- Komencis en 2012, finis en 2016.
Miaj atingoj
Dum mia laboro pri la projekto „PTC/Creo”
- Mi partoprenis en la disvolvado de subteno por desegnaĵoj kreitaj en konkurencaj programoj.
- Mi disvolvis la funkcion Concept Design, kiu ebligas al uzantoj krei el ekzistanta projekto plurajn branĉojn de desegnoj, konservi aparte sukcesajn desegnojn, rapide ŝanĝi inter ili, vidi liston de ŝanĝoj inter desegnoj, kaj finfine decidi, kiu el tiuj prototipoj plej bone taŭgas por fariĝi la sekva iteracio de la ĉefa projekto.
- Mi kontribuis al la disvolvado de la produkto Creo Layout, kiu ebligas rekonstrui 3D-objektojn baziĝante sur 2D-desaĝnoj.
PTC/Creo funkciis sur vasta gamo de platformoj dum sia longa historio. Iuj partoj de la kodo, kiun mi renkontis, estis verkitaj jam en 1986, eĉ antaŭ la enkonduko de la oficiala normo de la programlingvo C. Ĉi tiu programo povis esti ekzekutita sur preskaŭ ajna operaciumo, ekde IRIX ĝis MacOS 9 Classic.
En PTC mi lernis la ĝustan aliron por certigi la porteblon de programaro: la interna kodo de la programo estas tute malfiksita de la operaciumo. Inter la programo kaj la operaciumo situas la biblioteko HAL (Tavolo de la aparatara abstraktaro), kiu tradukas la alvokojn de la programo en tio, kion la operaciumo atendas. Ĉi tiu dezajno signifas, ke por funkciigi „Creo” sur nova operaciumo, necesas nur krei novan HAL-bibliotekon.

Bildkredito: mia propra ekrankopio. Alklaku por spekti.
Kompreneble, la granda plimulto de HAL-bibliotekoj ne estis subtenataj dum longa tempo — finfine, kiu en 2014 konsiderus lanĉi 3D-modeligan sistemon sur neaktiva operaciumo, kies lasta versio estis publikigita en 2006? Tamen, la oficejoj estis plenaj de ekipaĵo, kiu ŝajnis al mi legendoj: KRT-ekranoj de „Silicon Graphics”, klavaroj de „SUN” kun aro da aldonaj klavoj maldekstre de la alfabet-nombra bloko, serviloj de „HP-UX”, kaj aliaj similaj relikvoj. Unu legenda SGI KRT-ekrano postvivis semajnfinon dum kiu akvo el tubfendo fluis rekte sur ĝin. Dimanĉe (la unua labortago en Israelo), la ĉambro estis plena de nebulo, la ekrano ĵetis fajrerojn dekstren kaj maldekstren, ĝi siblis kiel serpento, sed ĝi ankoraŭ funkciis.
La disvolva procezo por „Creo” ankaŭ estis malsimpla: kodo estis skribita en operaciumo „Solaris”, testita en „HP-UX”, kaj kompilita kaj vendita por Windows® kaj macOS X®. Mi estis la tria programisto en la tuta kompanio, kiu je la komenco ricevis Windows-komputilon por disvolvado, kaj unu el miaj unuaj taskoj estis krei gvidilon por transiro de la tuta disvolva procezo al Windows®.
Post solvado de ĉiuj rilataj problemoj, mi pretigis duhoran prelegon pri la laborfluo por disvolvado, kompilado kaj testado sur Windows®, inkluzive laborfluo en version-kontrolaj sistemoj kaj aliaj komplikaĵoj. La prelego estis „plenvendita”, — ne pro populareco, sed ĉar ĉeesto estis deviga, — kaj ĝi eĉ estis registrita kiel gvidilo por estontaj generacioj, kvankam neniu scias, kie la registraĵo nun troviĝas.
Kiel rezulto de ĉi tiu projekto, mi ricevis „Atestilon de Elstareco” kune kun agrabla mona gratifiko. 😊

Bildkredito: mia propra ekrankopio. Alklaku por spekti.
Unu el la malavantaĝoj de „Creo” estis la neceso por statika bindo de la tuta programo. Por „Linux”, „Solaris”, kaj similaj operaciumoj, la tuta programo estis kompilita en unu gigantan duuman dosieron pli ol unu gigabajto granda. Ĉio, kion „Creo” enhavis, fariĝis parto de ĉi tiu plenumebla dosiero; la distribuaĵo konsistis el nur unu dosiero.
Mi rememorigas vin, tio okazis en 2012. Mi neniam antaŭe vidis plenumeblan dosieron de tia grandeco, kaj mi esperas, ke dosieroj de ĉi tiu grandeco ankoraŭ estas maloftaj eĉ hodiaŭ.
Kiam mi demandis: „Kial ni simple ne disigu la programon kaj apartigu ĝiajn partojn en dinamike bindeblajn bibliotekojn?”, oni respondis al mi, ke tio devus esti farita, sed neniu iam ajn havas la tempon por fari ĝin. Tiam mi vere komprenis, kiel la estraro perceptas la terminon „fontkoda restrukturigado”. Por esti justa, aliaj programistoj tamen komprenis la gravecon de tio kaj sukcesis fari partan restrukturigadon dum laborado pri aliaj taskoj. Rezulte, la Windows®-versio de la programo jam povis fanfaroni pri iuj dinamike bindeblajn bibliotekoj.
Grava problemo estis la agado de la programo. Partoj en desegnaĵo de „PTC/Creo” estas interligitaj. Ili povas esti multaj. En desegnaĵo de ŝipo (jes, tutaj ŝipoj estas desegnitaj en „PTC/Creo”), povas esti kvar miliardoj da partoj, ĉiu kun klare difinita pozicio kaj longa listo de dependaĵoj. Ekzemple, Riglilo A konektas Partojn B kaj C per apogiloj B1 kaj C1, kiuj havas truojn. Ŝanĝado de la pozicio de Apogilo B1 influas Parton B, la pozicion de Apogilo C1, kaj Parton C. Post la pozicia ŝanĝo, Apogilo C1 povus finiĝi en loko, kie ĝi ne povas ekzisti, ĉar Parto D jam estas tie. Ŝanĝado de la diametro de Riglilo A influas la diametrojn de la truoj en Apogiloj B1 kaj C1, kio potenciale influas kaj la koston, kaj la material-liston, kaj la fortikecon de la partoj. Ĉiuj ĉi faktoroj devas esti enkalkulitaj.
Rekalkulado de tuta desegnaĵo pro ŝanĝo de unu (aŭ pli da) parametroj estas nomata rekreado, ĉar la tuta geometrio estas, nu, re-kreita de nulo. Paraleligi tiujn kalkulojn tra pluraj fadenoj estas neebla, ĉar unu ŝanĝo en unu parto de la desegnaĵo povas influi detalon en alia parto de la desegnaĵo per tre longa kaj ne ĉiam evidenta listo de dependaĵoj. (Cetere, havi iteracio en la listo de dependaĵoj estis unu el niaj plej grandaj koŝmaroj; tia desegnaĵo ne povas esti riparita aŭ rekuperita, sendepende de ĝia graveco). Rezulte, la tuta desegnaĵo, sendepende de kiom da partoj ĝi enhavas, estas rekalkulita en unu sola fadeno, unu parto post la alia.
Ĉu vi povas imagi, kiom da tempo necesas por regeneri desegnaĵon de ŝipo kun kvar miliardoj da partoj en komputilo de la 2010-aj jaroj? Tie la kapabloj de programisto kiu skribas rapidan kaj optimumigitan kodon estis senprezaj. Miaj kolegoj ĉe „PTC” estis absolutaj sovaĝuloj — ili kapablas kompili, sencimigi kaj lanĉi ĉion, kaj fari tion per minimumaj rimedoj.
Dum mia laboro pri la projekto „ThingWorx”
Tiam, dum unu jaro, mi partoprenis en la disvolvado de ThingWorx, kiu estas platformo por rapida evoluado de projektoj en la Industria Interreto de Aĵoj (IIoT) kaj Pliigita Realaĵo (AR). Ekzemple, baziĝante sur ĉi tiu platformo, la kompanio „John Deere” kreis traktoron, kiu povas mem mendi anstataŭan parton kiam io paneas. Kiam la mekanikisto alvenas kun la parto, la traktoro montras al li en pliigita realaĵo kiel ĝin rapide kaj ĝuste anstataŭigi.
Mi estis la sola teamano laboranta el la oficejo en Ĥajfo; la resto de la departemento estis bazita en la oficejo en Herclija. Mia unika situacio signifis, ke dum la jaro mi preskaŭ tute estis okupita kun esplorado, komparante diversajn teknologiojn kaj donante rekomendojn al la estraro, kaj malofte partoprenis en disvolvado, kiu postulas pli proksiman integriĝon kun aliaj teamanoj.
- Ekzemple, mi komparis datumbazajn servilojn kaj rekomendis uzi PostgreSQL por la projekto.
Pro ĉi tiu esplora laboro, mi ricevis gradon „Superis Atendojn” dum la ĉiujara revizio.

Bildkredito: mia propra ekrankopio. Alklaku por spekti.
Post kiam la esplorfazo estis kompletigita, ni komencis skribi kodon uzante AngularJS. Mi, sistemprogramisto, estis atendata verki kodon en JavaScript! Mi eĉ ne sciis, en kiu operaciumo mia kodo funkcios! Tio estis tiom malproksima de la speco de laboro, kiun mi ĝuis, ke mi rapide decidis ĉion lasi kaj foriri.