Altă întrebare

Constituția stipulează la art. 48 că “familia se întemeiază pe căsătoria liber consimțită între soți, […]”, iar în DEX (așadar în limba română, respectiv cea a legii fundamentale), soții – la plural – sunt definiți a fi “cele două persoane de sex opus unite prin căsătorie.”

În aceste condiții mi s-ar părea firesc să avem o discuție despre oportunitatea unui referendum pentru a schimba cu adevărat definiția familiei, permițând și persoanelor de același sex, ori unui alt număr de persoane (diferit de 2) să formeze astfel de asociații.

Alt referendum, cu altă întrebare: una care să merite, eventual, efortul unui răspuns.

photo of women s hands

Fotografie de Zun Zun pe Pexels.com

Advertisements
Posted in Știri și politică | Tagged , , , | Leave a comment

12 ani

woman jumping while holding four balloons

Fotografie de Crina Doltu pe Pexels.com

Astăzi se împlinesc 12 ani de când s-a vândut prima licență software pentru un produs realizat în cadrul firmei pe care am fondat-o în 2004!

Încă-l mai avem în listă – pur și simplu pentru că încă sunt clienți (developeri) care-l doresc. Oferim, desigur, alternative moderne (și – spoiler alert! – lucrăm intens la ceva și mai și), dar primul nostru Gantt Chart (the original ProjectView) pentru WinForms poate rula fără probleme chiar și în aplicațiile WPF bazate pe cel mai recent .NET Framework (4.7.2), grazie Microsoft – their backwards compatibility is absolutely great!

Dar nu ca să fac reclamă am postat acest articol azi, ci cu speranța de a oferi, eventual, puțină inspirație cuiva, dacă ar avea vreodată nevoie. Mai bine v-aș povesti, așadar, câte ceva din perioada de dinainte de acești cei mai recenți 12 ani; de fapt chiar puțin mai de demult: din viața “anterioară”, de programator “for fun”.

M-am gândit deci că, deși din păcate nu mai am source code-ul și nici executabile pentru programele listate mai jos (cel mult mă pot baza pe câteva persoane-martor ca să demonstrez că ele chiar au existat), ar putea fi interesant să indic o serie aplicații pe care le-am “envision-at” și le-am scris folosind tehnologiile disponibile prin acea perioadă. (Postându-le aici, mă asigur și că nu le uit nici eu de tot.) 😉

1. “Compilator” de scheme logice

Scris în Pascal folosind mediul de dezvoltare cu nume de Porsche (“Turbo” Pascal), oferea o interfață grafică simplă (pentru ecran EGA de 16 culori) ce permitea definirea unor scheme logice plasând pur și simplu cu mouse-ul (chiar dacă nu încă cu dragging) blocuri de diferite tipuri, precum startsetinput, check, sau stop, plus săgeți de legătură, într-un grid pe ecran și completându-le apoi cu “bucăți de cod” introduse de la tastatură și afișate în interiorul shape-urilor de pe ecran.

Când erai gata și aveai diferite “căi de rulare” de la start la stop se făcea o mini-validare iar apoi… se genera (foarte simplu!) un program .pas într-un fișier temporar, conținutul fiind bazat pe schema ta, fișier ce era apoi compilat cu TPC.exe către un executabil de asemenea temporar, iar acesta din urmă rulat, în final, automat, într-un proces separat.

Nu era deci un compilator propriu-zis, nu genera direct cod mașină, dar dacă vedeai sistemul ca pe un black box – funcționa întocmai ca un mediu de dezvoltare cu compilator inclus!

(L-am scris prin clasa a 9-a și l-am prezentat – oh my! – la o așa-zisă “sesiune de comunicări științifice”, la Hunedoara. “Let the beat Ctrl-F9!”)

2. Educative: optică geometrică

La fizică în clasa a 11-a, parcă, am învățat câte ceva despre optică: lumină, oglinzi și reflexie, lentile și refracție. Cam în acea perioadă vedeam și eu Windows (3.1) pentru prima oară: sistemul de operare devenea grafic, aplicațiile deveneau event driven (dar puteau fi scrise totuși în continuare în Pascal – exista deja Borland Pascal for Windows, apoi a venit și Delphi!) Așa da, faină viață! Am putut scrie deci rapid o mini-aplicație Windows pentru școală pe care cred că am și prezentat-o profesoarei de fizică:

aveai un obiect vertical undeva în mijloc, apoi puteai așeza, oriunde pe orizontală (cu mouse dragging de această dată!) o sursă de lumină, un element cu rol de ecran, dar și lentile și oglinzi concave sau convexe de diferite înălțimi (de fapt distanțe focale) pentru a vedea ce se întâmplă: cum se vede oare obiectul în urma trecerii luminii? Totul era live, adică în timp ce mutai o lentilă (de exemplu) umbra de pe ecran devenea mai mare sau mai mică, în funcție de distanțele dintre obiect și lentilă, respectiv lentilă și ecran, de distanța focală a lentilei respective ș.a.m.d.

(Similar, am scris ceva mini-app și pentru chimie la un moment dat, dar chiar nu mai știu despre ce era vorba, nici măcar dacă era pentru organică sau anorganică…)

3. Jocuri

Apăruseră deja și jocurile pentru Windows – precum foarte simplul, dar mult jucatul Columns, care însă avea și un mic bug și uneori crăpa de-ți pierdeai toate punctele fără să fi greșit tu – dacă venea o coloană cu un anume set de culori și jos aveai blocurile aranjate într-un anume fel – așa că m-am gândit să scriu și eu unul, mai “jmeker”. Rezultatul a fost Fă 3. Un joc similar cu Columns, doar că de sus veneau seturi de 3 bile în loc de 3 pătrate, iar acestea “curgeau” în partea de jos, nu se așezau ca la Tetris, dar dispăreau tot când erau câte 3 de aceeași culoare. (Câtă distracție a adus vizitatorilor noștri!)

Dar am scris și jocuri cu cărți – fain era Solitaire, așa că trebuia să “scot” și eu ceva; folosind pentru prima oară imagini bitmap (reprezentând “culorile” cărților de joc): Șeptică americană a fost o simulare exactă a jocului cu doieri și șeptari, practicat împotriva computerului; apoi încă unul, gen Video poker, dar mai special: după ce câștigai “jetoane” puteai să ți le dublezi sau să le pierzi cu totul dacă nimereai, respectiv nu nimereai culoarea unei cărți trase la întâmplare din pachetul rămas (de maximum 7 ori, parcă, la sugestia tatălui meu.)

4. Productivity: cheltuieli la bloc

Pe vremea când abia auzisem de Excel era mai simplu să scriu algoritmi de calcul pentru sumele de plată per apartament, în funcție de metri pătrați sau de numărul de locatari, distribuite corect pe scări și considerând diferite excepții (precum “neracordații”), așa cum ar fi fost nevoie la administrație, în Basic. Visual Basic 6, dacă nu greșesc.

(Mai târziu, precursor al lui Visual Studio, mi-a plăcut și am folosit mult și Visual J++; înainte de C#Java a fost “tatalor” din punctul meu de vedere, inclusiv pentru a dezvolta aplicații Windows!)

5. Diverse

În această secțiune aș putea include, de exemplu, primul meu “Paint” (sau cum l-oi fi numit) în GW-BASIC, în care mișcai un cursor de tip punct cu tastele săgeți, iar cu spațiu schimbai starea: apăsat – lăsa dâre colorate, respectiv neapăsat – nu lăsa/ștergea punctele peste care trecea. Iar tastele de la 0 la 9 alegeau culori dintr-o paletă fixă.

… Plus altele asemenea, dar nu mi le mai aduc aminte bine. (U-u, ce vremuri! În orice caz, pe atunci lumea cam râdea când susțineam că-n viitor voi fi programând… pe bani!…) 😀

6. Lista se încheie aici, dar ghiciți voi ce făcea programul ăsta de final

Iată pașii de pseudo-cod care se executau la rularea executabilului pentru MS-DOS care-l conținea – dacă bine-mi amintesc, scris fiind în C++:

  • Uneori, alege la întâmplare un fișier F de tip .exe, altul decât cel care tocmai rulează (P), din directorul curent, dintr-un subdirector (dacă există), din directorul părinte (dacă nu cumva procesul curent rulează din rădăcina unui disc), sau dintr-un alt director din cadrul aceluiași părinte;
  • Dacă s-a ales un fișier F, citește B = array de N bytes din fișierul P.exe asociat procesului curent (N este o constantă determinată empiric);
  • Dacă primii maximum N bytes ai fișierului F sunt diferiți de array-ul B, deschide acel fișier F în read-write mode și inserează conținutul B la începutul său, păstrând restul intact (utilizând eventual un fișier temporar pentru intermedierea operației); dacă este imposibil de citit sau de salvat fișierul F modificat, nu afișa nicio eroare;
  • Citește R = restul de M bytes, sărind peste primii N din fișierul executabil P care tocmai rulează;
  • Dacă M > 0, scrie baiții R într-un fișier temporar cu nume ales la întâmplare T.exe în directorul curent (verificând în prealabil că un asemenea fișier nu există deja, altfel încercând alt nume aleatoriu), rulează executabilul respectiv, iar la sfârșit șterge definitiv fișierul T pentru… a nu da de bănuit.

Nu vă speriați: n-am distribuit niciodată acest ultim program, nimănui, doar câțiva apropiați l-au văzut, și numai pe 386-le meu. 🙂

Posted in Hobby-uri | Tagged , , , | Leave a comment

(Re-)începe școala

Anul ăsta nu mai zic nimic de început de an școlar, că poate iar aș fi admonestat cum că-s prea tânăr pentru a da sfaturi. (Bine că-s tânăr!) 🙂

Dar să știți că școala (nici măcar specializările de la universitate) nu ne învață “tot ce există” într-un domeniu sau altul (în ideea de a nu reinventa roata.) Și eu cred că nici n-ar trebui, pe lângă că n-are cum. Pentru a clădi peste ceea ce există oricum ai nevoie de research de nișă.

Iar dacă n-ai talent într-un domeniu, probabil că ai în altul – descoperă-l și go for it (ah! am dat un sfat! Ouch.) Lucru bun totuși: școala te poate ajuta aici puțin, într-adevăr, cerându-ți să încerci destule domenii (dar, de fapt, poate nu destule!)

PS: Nici eu nu mi-am dat seama până pe la 12 ani ce voi face în viață. Atenție însă: e posibil să îți dorești altceva decât ce poți face ușor. Eu am înclinat balanța așa încât acel altceva mai greu să fie doar un hobby de seară, iar meseria de bază a devenit hobby-ul de zi. (Și n-am regretat. Cel puțin nu încă – așa cum ziceam, poate sunt prea tânăr?) 🙂

Anyway, viețuitoarele sunt diferite și e o țară liberă (?), așa că fiecare-și poate combina elementele nestingherit: have fun sau multă, multă muncă, as you wish! Și spor!

Sorin Dolha's Blog

man in black and white polo shirt beside writing board Fotografie de Pixabay pe Pexels.com

Azi/în curând începe un nou an școlar/universitar în România. Succes, dragi elevi/studenți! Dar nu uitați: mare parte din ceea ce învățați la școală/facultate nu vă va fi de folos în mod direct; cel mult va ajuta la formarea deprinderii de învățare în sine și veți învăța (posibil, mai ușor) pe cont propriu detaliile de care veți chiar avea nevoie ulterior; veți reține din școală doar un set minimal de informații util doar pentru a nu reinventa roata și eventual pentru a ști (aproximativ) ce să căutați pe Google când vă trebuie un mecanism ce utilizează asemenea roți. În schimb:

Talentul, entuziasmul și parțial experiența reală vor prima, după părerea mea, mereu.

Așa că acționați inteligent și conștinentizați că nu este necesară atâta repetiție când vine vorba de teme pentru acasă constând în zeci de probleme similare, chiar dacă se zice că asta-i mama învățăturii; rezolvați câteva, depindreți ideea și gata.

Și nu învățați…

View original post 250 more words

Posted in Sănătate și întreținere | Leave a comment

Nu sunt destui progamatori?!

group of people near buildings

Fotografie de Huy Phan pe Pexels.com

Tot aud asta prin Sillicon Valley-ul transilvănean (dar nu numai aici). Văd, într-adevăr, cum multe firme angajează orice prind și formează echipe rotofeie, cu care obțin ulterior parcă și mai multe proiecte și ciclul se reia. Banii sunt mulți și ei – la fel (oarecum ciudat) ca încrederea clienților.

Poate că nu înțeleg eu business-ul cu adevărat, dar n-am cum să nu mă gândesc la discuția despre echipele mari din The Mythical Man-Month (carte publicată inițial în 1975 – dar încă aplicabilă!), cea prezentată în special în capitolul 3 – The Surgical Team.

Cred așadar că problema nu-i că programatorii lipsesc, ci mai degrabă că se angajează prea mulți! Iar asta și din cauza obișnuinței clienților de a plăti pentru echipele astea tot mai mari, în pofida lipsei inerente (și deseori evidente!) de eficiență, din cauze simple precum imposibilitatea divizării sarcinilor pentru a fi rezolvate de oameni diferiți sau nevoia de comunicare și coordonare atunci când paralelismul este, totuși, posibil. Clienții nu văd (sau nu vor să vadă – sunt într-un fel de denial?) că uneori deseori unde-s mulți puterea… scade, și nu strigă, cum ar trebui: “Împăratu’-n pielea goală.”

O soluție “anti-rușine” ar fi, poate, ca firmele de programare să nu mai comunice clienților lor numărul de oameni de care “e nevoie” pentru un proiect sau altul. Să discute doar despre costuri, asigurând clientul că structura echipei este tratată ca fiind foarte importantă, însă la nivel intern. Apoi să angajeze (sau să păstreze) câte un singur programator foarte bun per proiect, care să se ocupe de toată handramaua, de la requirements la documentație (e posibil!), plus – ca asigurare/backup – un bun copilot (și reviewer), ambii ajutați (nu încurcați!), de alte tipuri de angajați care să le ofere suport în direcțiile (mai mult sau) mai puțin cognitive asociate. Clienții ar plăti atunci aceleași sume, dar echipele ar deveni mult, mult mai eficiente. Și deci mult, mult mai profitabile!

Ce rămâne greu, pentru orice departament de HR sau head hunting company, ar fi să găsească piloții și copiloții necesari (și potriviți): primii pentru că trebuie să fie foarte deștepți dar și experimentați, iar cei secunzi pentru că deși trebuie să fie la fel de inteligenți, nu vor avea același nivel de responsabilitate în crearea software-ului cum probabil și-ar dori și ei (dar pot eventual avea responsabilități în alte zone, ca marketing sau chiar zona executivă, pentru a fi la fel de motivați.) Însă tot ar fi mai ușor, zic eu, decât să fie “racolate” mase întregi de creiere (unele submediocre!) ce fie vor sta pe bench, la propriu sau la figurat, fie vor încurca mai rău proiectele decât le vor ajuta…

Posted in Computere și Internet | Tagged , , , | 1 Comment

Anagajăm rață de cauciuc

yellow duck toy beside green duck toy

Fotografie de Anthony pe Pexels.com

Eu zic că da, am avea nevoie de o asemenea meserie în software development, poate prima de tip muncitor necalificat în domeniu.

Dacă dorim un boost suplimentar de calitate pentru produsele noastre, ducându-ne, poate, măcar puțin în fața competiției.

V-ați prins: vorbesc serios, susțin aici metoda rubber duck debugging, extinsă către un fel de self-code review bazat pe… povești.

Din experiență proprie spun (deși n-am avut anagajată vreo rață și – ce-i drept – doar am discutat cu alți programatori, fără însă să fi avut nevoie de any of their actual skills în acel context): atâtea momente “a-ha!“, atâtea îmbunătățiri aduse în cod – de la cele arhitecturale la cele simple, de naming/readability/maintainability, ori de diverse alte feluri -, atâtea buguri neprinse cu testing (non-TDD, recunosc) rezolvate “din fașă”!

Chiar și când aveam code comments/documentation pentru fiecare zonă importantă a aplicației sau pentru fiecare tip sau membru important din cod – deși și acelea rezolvau o serie de probleme, ele însele.

Pur și simplu când prezinți conceptele live cuiva de lângă tine este altfel; este – dintr-un motiv pe care eu nu-l înțeleg pe deplin (pot psihologii să ne lumineze?) – ceva în plus.

Și atunci, de ce nu? În locul (sau pe lângă) peer-reviewers (care, știm cu toții,-s mereu ocupați – doar sunt devs themselves!), hai să angajăm niște rațe-n echipă, un fel de păsări-preot cărora să ne confesăm când avem câte-un app feature major (aproape) gata.

Că nah, nu-s pregătiți oamenii să vorbească nestingherit cu jucăriile – sau, cel puțin, nu toți. (Eu, de exemplu, pare-se că n-am ajuns încă atât de dus.) Poate dacă se va dezvolta un pic mai mult AI-ul se vor mai schimba concepțiile… Pe moment însă, socialmente vorbind, cred că ar fi perfect acceptabil dacă programatorii ar vorbi, din când în când, la birou (sau într-o sală de ședințe), cu niște non-programatori angajați la aceeași companie (sau colaboratori/free-lanceri? :-)), explicându-le pur și simplu creația pe înțelesul lor (și descoperindu-și astfel singuri marile probleme din cod).

Căci să nu uităm: se spune că nu-i bine scris un program care nu poate fi explicat oricui în termeni simpli!

Cum ar suna, așadar, un mic anunț de felul urmăror (:-)):

Angajăm rață part-time, program de lucru flexibil; salariu decent (minim pe economie); cerințe: bun ascultător; constituie avantaj: cunoașterea noțiunilor de logică elementară?

Condiție suplimentară: să măcăne puțin spre deloc.

Posted in Computere și Internet | Tagged , , , , , , , | Leave a comment

Colecție

Am adunat (de-a lungul anilor – fotografiind atunci când îmi aduceam aminte) imagini cu… tablouri de prin camerele de hotel în care am locuit temporar. 🙂

Le-am extras azi (finally) din bibliotecă și le-am postat aici. Poate adaug și altele în viitor.

Băile Felix, 2016

Posted in Divertisment | Tagged , , | Leave a comment

Scopul vieții – cu grafic :-)

Ziceam anterior că eu nu cred că universul și viața au un sens (sau scop) precis: aleg să cred așa pentru că din punctul meu de vedere aceasta este cea mai simplă ipoteză. (Și îmi place simplitatea.)

Totuși, pentru că noi, oamenii (și posibil și alte lighioane), simțim că avem (măcar puțin) liber arbitru (dar mai ales pentru că n-am învățat nimic la filosofie și trebuie să scriem ceva la exteu*), hai să definim un scop frumos – fie el și iluzoric – pentru viață.

* Am scris o compunere similară – deși mult mai lungă și mai înflorită – în clasa 12-a la o lucrare de control reală; și am mai și povestit despre subiect și unora sau altora dintre apropiați, așadar trebuie să îmi cer scuze de la cunoscători pentru postul duplicat.

Pe scurt, aș zice că scopul vieții individului este o problemă de optimizare: aceea a maximizării ariei subgraficului funcției fericirii acestuia.

Viata

Revenind însă la funcția individuală†, trebuie să acceptăm că de obicei ne descurcăm foarte bine să interpretăm nefericirea și ne e greu să cuantificăm direct fericirea, așa că mai bine s-o descriem pe aceasta din urmă ca fiind, de fapt, lipsa primeia. Iar atunci problema este de minimizare a ariei supragraficului funcției, respectiv minimizarea nefericirilor.

Putem poate extrapola ideea la nivel de specie, sau chiar pentru viața universală, însumând, ponderat sau nu, ariile individuale prezente și probabilistic viitoare, luând eventual în calcul și un aport suplimentar adus de… înmulțiria indivizilor. 🙂

Așa că let’s just do what (we believe that) we please, conștientizând că durata absolută a vieții e doar una dintre cele două componente de care depinde aria subgraficului, nivelul fericirii (sau al nefericirii) momentane parând a fi la fel de important!

(Dar da, totul depinde și de raportul aspect considerat: timpul și fericirea nu au aceeași unitate de măsură. Fiecare e liber să aleagă scalarea.)

Posted in Sănătate și întreținere | Leave a comment