Arhiva pentru aprilie, 2009

Romania, Romania, Romania

aprilie 19, 2009

In primul rand, Hristos a Inviat ! In acest post voi vorbi despre prima zi de Pasti si despre romani.

Am fost aseara sa iau lumina din portul Tomis. Ajung pe plaja si ma asez in jurul unui culoar, aflat in fata scenei, pe care preotii, la 00:00, vor merge si vor da lumina credinciosilor. Lumina s-a adus tocmai de la Ierusalim; ma gandeam c-ar fi bine sa renunt la a o mai lua, poate au “manarit-o” fariseii :) . Lumea incepe sa se stranga si, cum era de asteptat, culoarul nu mai este respectat de noii veniti; multi s-au dus cat mai aproape de scena de pe care se tinea slujba. Inainte de sosirea preotilor se facea playback la o pilda (de fapt, nu stiu ce era), sonorizarea era proasta (abia auzeam ceva) si, peste toate astea, romanii venisera parca la un meci de fotbal, fiecare avea ceva de discutat, nimeni nu vroia sa taca. Sincer, chiar m-a deranjat lucrul asta; vroiam sa aud inregistrarea si valurile marii, nu zgomote surde. In fine, am luat lumina si am mai stat ~ 20 de minute dupa 00:00; nu vreau sa ma scuz, dar am stat atat de putin pentru ca : era frig si nu m-a atras prea tare slujba, din cauza sonorizarii, desi nu conteaza ambalajul unui produs, ci doar continutul :| .

La pranz am fost la un gratar langa lacul Siutghiol. Am observat ca foarte putina lume era la iarba verde si ca majoritatea celor iesiti erau pescari (desi momentan e interzis, parca). Zona este la intrare in Mamaia, deci pozitia proasta nu poate fi unul din motive. Atunci ce sa fie ? Am fost si pe plaja, am intrat pana la genunchi in apa; era super, sper sa fac o baie pana ma intorc in Bucuresti :) . Lume putina, contrar declaratiei Elenei Udrea (de foame am mancat titlul doamna ministru). Am mai observat ca strazile erau aproape pustii. Lumea ori n-a iesit din curte/casa/vila/palat ori a iesit la gratar intr-o padure de langa Constanta. Ca sa ajungi intr-un astfel de loc ai nevoie de o masina; am vazut foarte multe masini (si destul de scumpe :D ) pe Soveja (o strada medium-end la nivelul orasului) astfel ca varianta asta s-ar putea sa solutia anchetei mele. Dar ma indoiesc, mai ales ca lumea e destul de speriata de criza economica. Nu cred ca voi reusi sa aflu adevarul si sincer nici nu ma intereseaza atat de tare. Era sa uit ca vorbesc de romani; am vazut ca multi faceau gratarul direct pe pamant :| , halal protectie a mediului.

Tot referitor la pustietatea de pe strazi, am observat ca in Bucuresti lumea iese mai mult din casa, cel putin pe strazile pe care circul des. Romtelecom are o reclama complet idioata : “Realitatea e gri ? Romtelecom Clicknet iti aduce zambetul pe buze”. Deci, zambetul pe buze e adus de internet (Clicknet e un serviciu de internet). Hmm, foarte grav, ei au observat ca oamenii se retrag pe net si traiesc foarte bine in lumea lor, desi in realitate lucrurile sunt pe la polul opus. Scurtez prin a spune ca strazile/parcurile au devenit pustii, ca oamenii nu mai intreaba taximetristii locatia unei adrese ci pe  Google si plimbarea se face prin parcul Cancan. Nu cred ca mergem in directia buna. 

Romanii, desi nu sunt evrei, se victimizeaza si se plang de lipsuri. Mai tot timpul, altcineva e de vina si niciodata nu ne ajung resursele. Dupa parerea mea, existenta resurselor in cantitati mici mi-a prins foarte bine. As fi fost alt om daca aveam totul pe tava.

Pe final a ramas definitia barbatului bun la toate, pe care am auzit-o la ProTV : stie sa gateasca, sa danseze si sa dea cu pumnu’. Foarte tare :) .

Dezamagiri si reusite?

aprilie 15, 2009

Tot postul este un monolog interior si cuprinde cateva idei puse cap la cap. Meciul e jucat cu cartile pe fata, n-are rost sa ne ascundem in spatele degetului mijlociu.

Foarte multi oameni isi doresc sa fie fericiti. De fapt, toti vor sa fie fericiti, insa modalitatea difera de la o categorie de oameni la alta. Eu sunt fericit ca nu sunt fericit; cea mai mare aberatie pe care, probabil, ai citit-o. Cum sa fii fericit pentru ca nu esti fericit? Esti cumva un sectant sau vreun crestin caruia Biblia/Biserica/Preotul i-a spalat craierul si care pentru a in “gratiile” Celui de Sus considera ca a fi sclav e un lucru normal/bun/necesar ? Din pacate nu sunt sectant si, spre rusinea mea, n-am citit Biblia. Atunci trebuie sa fie altceva …. acel altceva nici eu nu sunt in stare sa-l explic/dezvalui :( .

Ce se intampla, de fapt ? In viata, exista bariere de sincronizare, momente in care trebuie sa tragi linie. Capacitatea trage linie primilor 8 ani de scoala (sau ultimilor 4), bac-ul celor 4 ani de liceu si, fara sa vrei, ajungi sa tragi cea mai groasa linie dupa terminarea facultatii. Pui in balanta ce ai facut bine, ce ai facut rau si ce-o sa faci in continuare. Dar de ce e cea mai groasa ? Dupa ea, majoritatea, intra in the wild, devii responsabil. Si inca o chestie importanta : te casatoresti; asta daca ai cu cine :) . Ma gandesc ca oamenii de acum X ani ( X > 40 de ani ), la varsa mea, aveau o familie intemeiata, deci erau responsabili, puteau lua viata in piept. Eu nu pot, nu sunt responsabil, n-am realizat nimic (fara modestie). Si vine intrebarea magica, tot mai prezenta in ziua de azi : pe cine intereseaza sa realizezi tu ceva ? traieste viata ma baiatule, vremea trece si intr-un final o sa-ti para rau ca nu te-ai bucurat de ea. Intre cuvinele vremea si trece multi batrani, perversi, introduc un cuvant vulgar (hint: incepe cu p :D ). Nu sunt departe de momentul adevarului, de trecerea de la o etapa la o alta. Si, sunt sigur, atunci cand o sa vreau sa ma plimb prin parc o sa-mi iau laptop-ul de maner (ipotetic vorbind, varianta curenta n-are asa ceva), pe cand majoritatea o sa aibe o persoana iubita in locul acestui obiect. O fi ceva rau in asta ? De ce sa nu fac ce simt ? Nu simt afectiune fata de oameni, nu ma atasez de persoane. De ce as incerca sa ma schimb ? Pentru ca majoritatea oamenilor sunt atasati de oameni si ii considera pe restul niste ratati antisociali care merita sa moara in cele mai mari chinuri ? Ah gata am aflat si solutia salvatoare, imprieteneste-te cu cat mai multa lume si prefa-te indragostit de orice tipa pe care o intalnesti si intr-un final o sa intri si tu in lumea buna.

Bun, m-am prins : linia cea mare se trage cand sa-ti dai suflarea. Si-mi dau seama c-am facut umbra degeaba. De fapt si de drept, asta e marea problema : faci umbra degeaba <=> nu ai realizat nimic. Sunt sigur ca majoritatea oamenilor m-ar injura pe masura ce ar citi postul asta si mai stiu ca si ei fac umbra degeaba, desi n-ar recunoaste asta nici sa-i bati.

Nu stiu, chiar ma simt ciudat. Simt ca vine bariera peste mine, insa mai simt ca sunt suficient de puternic sa-i rezist; doar n-oi fi primul din lume si nici ultimul, nu ? Si daca ceva nu-ti place, nu-l iei; a cumpara ceva doar de dragu de a cumpara nu ma defineste.

How long will you mourn me ?

Item-uri din dota. Framework-uri. Comparatie.

aprilie 7, 2009

Inainte de toate, recunosc ca unele asemanari sunt fortate : berea si laptele au in comun faptul ca-s lichide. ha ha ha, ce comparatie tare ….

In post-ul “Dota.Limbaje de programare.Comparatie” (link http://dlsana.wordpress.com/2009/03/14/dota-limbaje-de-programare-comparatie/ ) am spus ca voi continua sa scriu despre cele doua lumi aparent diferite, dar care au si foarte multe lucruri in comun.

Inainte de a trece la treaba, vreau sa spun ca e posibil sa fi jignit anumite limbaje de programare, insa am fost constrans si de trastaturile eroilor din dota. Sa dau si un exemplu, Razvan a spus ca am subevaluat python-ul zicand ca leaga module si ca ar fi Warlock. Intr-adevar, exista aplicatii misto scrise in python, cum exista si battle Warlock (power threads, stygian si refresher), insa sunt si alti carry mai buni, parerea mea.

Pana sa trec la lucruri “palpabile”, incerc sa discut putin la nivel superficial. Consider ca este mai usor de citit o paralela cu liniute :

- Dota este un invelis al Warcraft 3-ului; programarea este un invelis al hardware-ului. Nu sunt entitati independente de context.

- Jucatorii de dota se numesc “gamers“; utilizatorii limbajelor de programare se numesc “programmers”. Exista o ierarhie a “participantilor”; in dota : noob pana la gosu/pro, iar in programare (cred, nu sunt sigur) : programator junior pana la software architect. Exista jucatori buni de warcraft si de dota, dupa cum exista si programatori buni care stiu si software si hardware ( nici chiar pana la Ebers Moll sau Giacoletto ). Din fericire, cei mai buni sunt cei mai buni doar intr-un domeniu :) .

- Cand X ( X > 1) pro gameri sau X programmeri (asemanator, nu?) vorbesc despre lumea lor nimeni din exterior nu ii intelege. Tot aici intra si diversele glume : a fulgerat afara deci a dat Zeus ultimata; tipul accidentat de masina a primit un SIGKILL si tot n-a murit ?!?!

- Exista “companii” mari care fac lucruri spectaculoase. Google, Microsoft etc, pe de o parte, si Ks.Int, MYM, VP, SAY_PLZ etc, pe de o alta. Desi, din ce-am observat, desi la noi, in anunturile de angajare, se insista pe experienta ( trebuie sa ai 20 de ani de programare in spate sa fi software architect ), in dota lucrurile nu stau deloc asa. Exista clanuri foarte bune cu jucatori nu foarte experimentati, dar cu o imaginatie bogata; nu de putine ori clanuri foarte cunoscute au luat bataie de la adversari necunoscuti – cel mai celebru caz ar fi VP, cea mai buna echipa la momentul respectiv, a luat bataie de la niste amatori si jucatorii vroiau sa se desparta (la moralul lui ARS-ART cred c-am avut si eu cu nein o contributie importanta, cu saptamani in urma, cand l-am ars _mai rau ca la politie_ pe high level room 1). Echivalentul echipei necunoscute in lumea programarii este firma startup; sunt dese situatiile in care afaceri mici se vand pe bani buni gigantilor – jucatorii buni de dota din echipe necunoscute ajung in echipe mari.

- Noobii ii intreaba pe pro ce item-uri sa-si faca pe un erou; programatorul junior il intreaba pe software architect ce framework sa foloseasca pentru a rezolva o anumita problema intr-un limbaj de programare dat. Pornind de la aceasta afirmatie o sa dezvolt, in partea a doua, acest post.

- Preconceptia este la mama ei acasa; daca incerci un item diferit de cele standard pe un erou atunci esti considerat noob, retardat etc; voi ce parere aveti de incercarea utilizarii a unei biblioteci scrisa in Python (sa zicem ca e cod intermediar, nu e compilata in nativ cu pypy) intr-o aplicatie scrisa in Java ? (eu as rade, dar n-as zice ca e o prostie, desi multi zic ca pe Lina n-ai de ce sa-ti faci buriza :) ). Ce-i scris in java tre sa se fie interfatat cu altceva scris in java, ca doar asa e standard.

- Organizarea echipelor este asemanatoare : team leader programmer / captain, developer / carry, tester / support. La nivelul superior se afla un project manager.

- Sunt fenomene de masa; sunt foarte multi programatori si foarte multi jucatori de dota. Din fericire, nu sunt multi foarte buni :) . Pentru a fi bun in dota trebuie sa cunosti : substratul (warcraft 3 pentru coordonare, lupte cu eroi, farm etc), stratul (eroii, in pricipiu cam ce face fiecare erou si la ce e bun) si suprastratul (itemurile, ce face fiecare item, pe ce erou si in ce moment al jocului se mapeaza mai bine etc). Substratul in cazul programatorilor este hardware-ul; e ok sa programezi, cu 0 notiuni de hardware, pe o platforma care vine cu un compilator smecherit, dar ce te faci cand nu stie sa faca nici macar loop fusion ? Stratul reprezinta modelarea, dupa parerea mea in pseudocod, a structurii programelor; trebuie sa stii cu ce limbaj cam ce poti face (sa nu crezi ca poti face site-uri in C si kernel-uri in PHP). Suprastratul este reprezentat de framework-urile care fac utilizabile anumite limbaje de programare; ce e Java fara tonele de librarii din spate ? ce poate face N’aix fara item-uri ?

- Alte lucruri pe care le aveam in minte dar le-am uitat.

Scriu despre acest subiect pentru ca-mi plac cele doua lumi; sunt competitive. Te lupti cu adversarii, evoluezi. Chiar daca nu esti cel mai bun sau in varful piramidei sentimentul de apartenenta e placut. Imi place sa cred ca atat in dota cat si in programare nu exista o singura reteta de succes si ca totul e intr-o continua schimbare, iar la fiecare moment trebuie sa alegi combinatiile cu trades-off-ul cel mai bun pentru tine ( intr-o vreme se juca Sniper cu Divine Rapier, cum se programa in C++ cu MFC; lucrurile s-au mai schimbat intre timp ).

Lista framework-urilor cu care am lucrat :

1. STL este in standardul de C++, cum si Dagger-ul este un item standard de Slayer. Ambele iti permit saritura peste anumite chestii : STL peste structuri de date si algoritmi uzuali, Daggerul peste spatiu. Se poate juca Slayer si fara Dagger cum se poate programa in C++ si fara STL.

2. Qt este o biblioteca moderna, foarte misto, de GUI Toolkit scrisa in C++. Este o alternativa la GTK si MFC, despre care nu stiu mare lucru asa ca nu-mi dau cu parerea. Scopul este sa impresioneze utilizatorul prin widget-uri misto. Item-ul echivalent este Divine Rapier, care iti da mult damage in plus; scopul fiind acela de a macelari adversarii si a-i impresiona pe cei ce te urmaresc :) .

3. Eclipse API este un framework, scris in Java, pus la dispozitie de IDE-ul Eclipse. Radiaza de frumusete, fiind scris foarte misto si avand un GUI foarte dragut, este apreciat atat de programatori cat si de utilizatori. Item-ul echivalent este Radiance, acesta facand damage adversarilor si crescand sansele eroului sa faca bahaos ( ce vor amatorii sa vada :) ). Problema lor e cantitatea mare de resurse consumata : Eclipse mananca memorie cu sutele de mega, iar Radiance se face dintr-un item foarte scump, care iti ofera doar damage.

4. pthread este standardul POSIX pentru thread-uri si implementarea este la nivelul kernelului in C. Kernelul unei echipe de dota este erou de baza din early game, Lina in cazul nostru. Item-ul care ofera Linei posibilitatea procesarii paralele este Necronomicon – se spawneaza doi creepy, cu vraji, destul de puternici pe care trebuie sa-i controlezi. Pentru sisteme singlecore paralelismul e pseudoparalelism, cum si pentru jucatorii slabi de dota utilizarea necronomiconului este greoaie – abia ma descurc cu un erou, vrei sa mai controlez si doi creepy ?!?! pana dau click pe ei imi scapa adversarul; insa in meciurile competitive necronomiconurile pot face diferenta, damage-ul facut fiind comparabil cu cel al unui erou de suport.

5. openMP simplifica lucrul cu mai multe fire de executie si are extensii pentru C, C++, Fortran si altele. Manta Style permite crearea a doua iluzii ( a trecut ceva vreme de cand nu m-am mai jucat, sper sa nu se fi schimbat ) si se foloseste pe multi eroi. Manta e mai usor de folosit decat necronomicon pentru ca iluziile nu au vraji.

6. openMPI este folosit pentru programarea distribuita, insa mi se pare ca se mapeaza bine pe masini/probleme de timpul SIMD (Single Instruction Multiple Data). Mekasm este un item SCMU (Single Cast Multiple Units) pentru ca face heal pe arie si se casteaza atunci cand sunt multi eroi/creepy in jurul tau.

7. openGL este un framework este satisfacerea poftelor umane in materie de grafica. Majoritatea oamenilor care se uita la un replay de la dota vor sa faca “senzatie”, ceva spectaculos. Buriza ofera eroilor aceasta sansa, crescand damage-ul considerabil si putand duce usor la “Triple KILL!!!” si la “Holy SHIT !!! Beyond GODLIKE”. Din ce stiu, openGL poate fi interfatat cu aplicatii scrise in diverse limbaje de programare, cum si Buriza se poate folosi pe mai multi eroi carry.

8. BSD sockets permite trimiterea/primirea mesajelor pe retea. Boots Of Travel permite unui erou teleportarea in diverse locuri pe harta, cu conditia sa fie un creepy aliat in locul respectiv. Aceeasi conditie o pune si BSD sockets : existenta unui receptor care sa faca recv() la send()-ul unui proces.

9. .NET 3.0 e sub protectia celor de la Microsoft cum si un erou cu Linken’s Sphere e protezat de vrajile adversarilor. Framework-ul poate fi folosit atat in aplicatii C++ cand si C#. Asemanator, Puck(C#) si Lina(C++) sunt eroi pe care Linken’s Sphere e ceva obisnuit, mai mult pe Puck insa.

10. boost este cea mai mare biblioteca de C++ si va intra in standardul C++0x (de fapt, C++1x :P ). Soul booster este un item ce va intra in lista de item-uri standard pe Lina ( nu garantez :D ). Au in comun dimensiunea mare (un proiect ce foloseste boost sare de 10 Mega, un erou ce are soul booster sare de 1500 viata) si flexibilitatea ridicata : boost are multe extensii (MPL – meta programming language rullz,iar Boost::asio ar trebui studiat la facultate, ca model de how to wrap I/O functions), iar din soul booster se poate face Aghanim’s Scepter sau Blood Stone.

11. JFC (Java Foundation Class Libraries) este frameworkul de baza al lui Java. Diffusal blade este item-ul de baza pe Mirana, in meciuri competitive. Ambele incetinesc entitati : JFC – program, Diffusal blade – adversar. Pana la urma, toate-s bune si frumoase, nu ? Reusesc sa-mi termin adversarul cat si proiectul Java.

12. Swing este GUI toolkit destul de slabut, dupa parerea mea. Mjolnir este un item inefectiv pe Mirana. Le leaga gradul mare de utilizare.

13. Nu am folosit alt framework ori nu-mi aduc aminte de el :) .