Claudiu Persoiu

Blog-ul lui Claudiu Persoiu


Archive for the ‘Diverse’ Category

Ghid de motivare pentru programatori sau cum sa aiba parte de un challenge adevarat

without comments

motivationIT-ul este probabil unul dintre cele mai dinamice domenii de pe piata de locuri de munca, iar oamenii reprezinta o resursa foarte importanta si totodata limitata.

Si totusi oamenii vin si pleaca destul de des, iar cei mai multi se plang de lipsa motivatiei.

Totul se va termina acum cu acest ghid simplu pentru motivarea programatorilor si nu numai!

Programatorii au nevoie de probleme “challenging”, tot timpul spun ca vor lucruri mai noi si mai challenging, nu?

Da-i un challenge adevarat! Pune-l sa obtina specificatii de la un client care nu stie ce vrea, lasa-l sa se chinuie, eventual lasa-l singur, sa simta adrenalina unei provocari adevarate!

Trebuie retinut ca un programator nu este decat un Project Manager reprimat, da-i sansa sa se exprime!

Dar nu trebuie sa te opresti aici, nu exista provocare mai mare decat sa lucrezi la mai multe lucruri in acelasi timp. O idee buna ca sa maresti complexitatea este sa-i dai ocazia sa lucreze la mai multe proiecte in paralel. Da-i ocazia sa aiba mintea ocupata cu lucruri cat mai diferite, diversitatea este mereu buna, nu?

Un secret pentru a exploata diversitatea la potential maxim este sa aiba atributii diferite pe diferite proiecte, poate un proiect care implica management sa alterneze cu unul de mentenanta. Este pacat sa nu aiba parte de suficienta diversitate!

Scrie prea mult cod? Trebuie sa faci ceva in sensul asta! Atunci cand un programator sta concentrat si lucreaza la ceva nu este nimic altceva decat un strigat disperat dupa atentie. Trebuie sa faci ceva ca sa intrerupi cercul acesta vicios, este de datoria ta ca manager sa-l salvezi!

Trebuie sa gasesti un mod sa-l intrerupi: incearca cu cateva sedinte, ajuta mereu. Daca pare dornic sa iasa din sedinta, este doar un semn ca isi doreste sa intre in urmatoarea sedinta!

In timp o sa observi ca oamenii cu cat sunt mai buni la scris cod, cu atat isi doresc mai tare sa nu mai aiba timp sa faca asta. Totusi, nu iti va spune asta, sau, chiar daca iti spune, este doar pentru ca el nu stie ce-si doreste cu adevarat.

Iar pana la urma, daca ii place atat de mult sa scrie cod, poate ar trebui sa-l duci la nivelul urmator si sa-l pui sa si-l testeze singur. Pana la urma, daca el l-a scris, cine altcineva sa stie mai bine cum sa-l testeze?

Mai este un lucru de mentionat legat de cod in contextul unui challenge. Cand vine un programator la interviu, ce spune el de fiecare data este “vreau sa invat lucruri noi”. Cum aplici aceasta dorinta? Simplu, trebuie doar sa-l pui sa faca ceva ce nu stie! Asa ii prezinti ceva ce este nou si challenging in acelasi timp. Este programator PHP? Nu-i nimic, da-i un proiect de Java! Este programator de Java? Nimic mai simplu, da-i un proiect Objective-C! Poate uneori este greu sa gasesti noi tehnologii pe care nu le cunoaste si pe care nu a incercat deja sa le invete, dar fericirea unui programator nu este un lucru usor de obtinut!

Sa nu cazi in greseala da a acorda salarii corelate cu postul, nu-ti face griji, salariul este confidential, nu vorbeste nimeni despre el. In special atunci cand recomanda un prieten, in mod sigur nu o sa se intereseze de salariul care i-a fost oferit acestuia, doar este confidential, ar fi lipsa de etica profesionala sa se intereseze, nu ar trebui sa-ti faci griji in acest sens.

Si, ca tot am mentionat interviuri, poate uneori te gandesti ca procesul de angajare trebuie sa produca rezultate coerente. Nimic mai gresit, de ce este nevoie cu adevarat? Asa cum am spus si mai devreme: Diversitate! Am citit un articol acum ceva vreme despre firme chinezesti care angajeaza femei frumoase pentru a stimula mediul. Mereu trebuie sa gasesti moduri noi de a integra ultimele tendinte, dar daca tu ai doar posturi tehnice deschise, trebuie sa te descurci cu ce ai. Poate te gandesti ca a angaja pe criterii estetice poate fi problematic uneori, mai ales cand sunt posturi tehnice. In acest caz trebuie sa-ti dai seama ca motivarea trebuie gandita si la scara larga. Da, poate unele echipe o sa se adapteze mai greu la acesti noi membri ai echipei, dar daca persoana respectiva o sa se faca remarcata in orice fel, inseamna ca ai facut o treaba buna!

Sa nu uitam de traininguri si conferinte. Cand ai vorbit ultima oara cu un programator si a zis ca nu-si doreste un training sau sa mearga la conferinte de specialitate?

Motivatia trebuie mentinuta, ca orice alta dorinta. Exista doua componente: dorinta pentru ceva si, nu in ultimul rand, lipsa acelui ceva dorit. Daca iti doresti ceva este pentru ca nu il ai inca, nu-i asa?

Daca nu ai inteles deja, solutia este simpla: nu-l lasa sa aiba acel ceva dorit. Vrea un training? Organizeza trainingul, apoi ai grija sa trimiti persoanele care sunt cel mai putin interesate la el. El o sa vada ca se poate, chiar daca nu pentru el.

Poate asta o sa fie uneori un challenge si pentru management, dar cu multa atentie este realizabil! Pastreaza dorinta vie!

Un alt sfat legat de traininguri: pentru a pastra dorinta vie este util sa-l trimiti la traininguri de care nu este interesat, dar de care este interesat altcineva. Asa o sa ai mereu angajati interesati de traininguri si care fac traininguri, dar care sunt motivati in continuare!

Atunci cand munceste nu trebuie sa vada utilitatea muncii lui, este foarte important. Daca o sa o vada, cum o sa mai fie motivat sa continue? E ca si cum urci un munte, de ce sa-l mai motiveze urcarea daca a vazut cat este de sus? Trebuie sa ai grija sa nu-si dea seama unde a ajuns: este bine sa nu aiba acces la statistici ca nu cumva sa aiba un sentiment de finalitate, de tinta atinsa, de tel realizat, cum ar mai putea fi un challenge atunci?

Si nu uita sa nu-i arati incredere, trebuie sa o construiasca singur. Trebuie sa-i dai o tinta si apoi sa o mentii doar o tinta. Intr-adevar, o tinta atinsa provoaca placere si satisfactia muncii, dar oare tu asta iti doresti sa-i oferi? Gandeste-te la asta putin, de fiecare data cand il lauzi pentru munca realizata o sa mai fie motivat? De ce sa incerci sa-l stimulezi sa se autodepasasca cand poti sa-l stimulezi sa atinga o tinta pe care nu o poate atinge. Nu-i arata ca ai incredere in el, lasa-l sa se chinuie, sa simta challenge-ul.

O vorba spune: “drumul cunoscut e cel mai scurt”. Totusi, unii incearca sa automatizeze lucrurile rudimentare. Practic incearca sa scape tocmai de drumul cunoscut. Efectiv, daca il opresti din automatizarea proceselor il ajuti sa ramana ocupat, il ajuti sa aiba o minte ocupata, iar o minte ocupata este o minte activa!

Si, in al doilea rand, cu aceasta abordare il ajuti sa-si mentina locul de munca. Poate el nu-si da seama, dar daca o sa-si piarda utilitatea cand o sa ramana tocmai fara task-urile pe care, pana la urma, le si cunostea atat de bine, pentru ca le-a facut de atatea ori… Programator sau nu, nu trebuie sa-l lasi sa fie inlocuit de un robot!

In al treilea rand este satisfactia drumului cunoscut – nu-l lasa sa deturneze de la el, oricum, la cat este de cunoscut, ar trebui sa fie destul de scurt.

Nu in ultimul rand trebuie sa-l inveti importanta managementului. Trebuie sa vada ca il poti ajuta, ca tu esti cheia catre succesul lui. Ca sa ii arati acest lucru, trebuie mai ales sa ai incredere in tine. Incearca sa organizezi o petrecere fara sa-l chemi. Nimic nu spune mai mult “puteam sa fiu si eu acolo” decat faptul ca nu ai fost acolo.

Un alt mod este sa-ti organizezi o calatorie de afaceri intr-o locatie exotica. Nu-ti face griji, nu este important sa ai efectiv ce sa faci acolo. Cat timp esti acolo, nu uita sa te distrezi, este foarte important sa stie si el asta. Cand o sa fie obositor trebuie sa-ti aduci aminte ca nu faci asta pentru tine, faci asta pentru el si imaginatia lui!

Poate unele sugestii nu functioneaza la toata lumea, dar trebuie sa incerci sa combini cat mai multe pentru a avea parte de un succes real si programatori cu adevar motivati!

Nu incerca sa identifici aceasta lume utopica, pentru ca orice asemanare cu realitatea cotidiana este pur intamplatoare.

Written by Claudiu Persoiu

4 April 2016 at 9:39 PM

Posted in Diverse

Tagged with ,

Nu PHP 6 nu este aici… dar cum ramane cu 2013?

without comments

Aceasta este o retrospectiva a ultimului an.

In caz ca inca se mai intreba cineva, nu, PHP 6 nu a aparut si nici nu va aparea prea curand, probabil.

De ce este relevant? De cand am inceput acest blog am avut la final de an un post legat de PHP 6 si faptul ca acesta nu a fost lansat. In 2008 era o intrebare populara, dar nimeni nu mai crede asta acum, asa ca voi incheia acest subiect acum. Sa revenim la anul care s-a incheiat.

Aproape de jumatatea anului a fost lansata versiunea PHP 5.5, aceasta aducand in plus functionalitati cum ar fi: finally , generators si multe alte inbunatatiri.

Ca in 5.4, nu sunt functionalitati definitorii pentru limbaj. In aceasta noua versiune chiar sunt lucruri care pot fi inlocuite cu usurinta, dar daca sunt prezente, sunt bine venite.

Chiar daca PHP da dovada de multa dinamica in ultima vreme, cred ca in acest an cuvintele cheie au fost HTML5 si JavaScript.

HTML5 are parte de multe imbunatatiri, iar componente mai vechi incep sa creasca in popularitate. Firmele incep sa investeasca in jocuri care functioneaza in browser folosing WebGL. Chiar si jocuri mai vechi sunt portate catre platforma, folosind tehnologii cum ar fi asm.js.

Si, pentru ca am vorbit de jocuri, mi se pare foarte interesant cum doar acum 5-7 ani jocurile bazate pe JavaScript erau destul de simpliste, iar acum sunt comparabile cu cele de pe PC sau console.

Cred ca revolutia web, pe care multi o asteptau, incepe sa prinda avant. In sfarsit Web-ul este o platforma in adevaratul sens al cuvantului si JavaScript un limbaj cu adevarat apreciat.

Succesul se datoreaza tuturor partilor, nu mai este vorba doar de ECMA sau doar de producatorii de browsere, acum este o adevarat dinamica. Revolutia Web este in plina desfasurare!

Cand vine vorba de backend, lumina reflectoarelor a fost asupra Node.js. Acesta incepe sa devina un jucator important. Au aparut frameworkuri noi si nu mai este o platforma folosita predominant de hackeri dornici sa exploreze tehnologii noi, ci si de companii mari, cum ar fi PayPal, LinkedIn si Yahoo, oferind un vot de incredere pentru acesta. Cred ca Node.js incepe sa-si gaseasca locul si o nisa de piata, iar eu, un fan JavaScript, nu pot sa fiu decat incantat.

Un avantaj al Node.js este ca nu trebuie sa ai grija mai multor versiuni de JavaScript, asa cum este necesar in browser. Asta permite folosirea ultimelor facilitati ECMA in mod liber, un mediu in care poti dezvolta JavaScript fara dureri de cap.

Tehnologic vorbind, a fost un an foarte interesant pentru web development.

In final, va doresc tuturor un 2014 extraordinar de bun!

Written by Claudiu Persoiu

19 January 2014 at 11:10 PM

Posted in Diverse

Tagged with , , ,

Codul epic din filme

without comments

In filmele unde sunt prezenti si hackeri, apare cod sursa care curge in rauri pe ecran. Pare important, pare sa fie un geniu in calculatoare care se pregateste sa revolutioneze ceva.

Te-ai intrebat ce este codul acela epic din filme? John Graham-Cumming a facut o colectie de filme si codul sursa folosit in acestea: http://moviecode.tumblr.com/.

Written by Claudiu Persoiu

5 January 2014 at 12:07 PM

Posted in Diverse

Construind o noua generatie de programatori intr-o societate de consum

without comments

Motivat de articolul lui Rober Martin – Hoards Of Novices, am decis sa scriu si eu un articol pe un subiect similar.

Nu vreau sa scriu despre nevoia angajatorilor de a angaja juniori, ci despre de ce acesti juniori nu se ridica la nivelul asteptarilor, iar pentru final, despre ce am putea face pentru o mai buna pregatire.

Piata software este intr-o continua expansiune. Software-ul este modul in care comandam calculatorului ce sa faca. Astazi, dispozitivele din jur au procesoare, software si aplicatii, de la telefoane, ceasuri, televizoare si pana la masini de spalat si frigidere. Toate aceste dispozitive au nevoie de programe si programatori ca sa dezolte aplicatii pentru ele.

Cu aceste premize ajungem la criza software. S-a ajuns la concluzia ca avem nevoie de software mai repede pentru a rezolva aceasta criza. Acesta a fost un subiect important in anii ’60, dar cu timplul lumea nu i-a mai dat importanta.

Pentru a rezolva aceasta problema au aparut limbaje de nivel inalt si framework-uri. Limbajele de nivel inalt fac dezoltarea si intretinerea unei aplicatii mult mai simpla. In acest mod programatorii se indeparteaza foarte mult de “metal”, de hardware-ul efectiv, lucrand cu notiuni mult mai usor de manipulat.

Intr-o lume a limbajelor de nivel inalt (Java, C#, PHP, Python, JavaScript etc.) este mult mai usor si mai rapid sa compui o aplicatie.

Si totusi, desi modul de dezoltare al aplicatilor devine mai simplu, calitatea programatorilor este si ea in scadere.

O societate de consum

Avem nevoie de scoala pentru o slujba mai buna.

Pentru ca nevoia de studii reprezinta astazi o nevoie generala, scoala in sine se dilueaza. Principiile educationale in mare parte nu au suferit schimbari fundamentale de cand educatia a devenit disponibila tuturor. Rezultatul procesului de invatare este examenul, pentru ca asa se determina nivelul cunostintelor. Si mai presus, un rezultat mediocru ne permite sa avansam, fara sa demonstreze ca baza evaluata este prezenta.

Trecerea la nivelul urmator se face print-o examinare partiala, nu trebuie sa stapanesti 100% din notiuni, ci doar 50-60%. Nu este neaparat clar daca in celalate 40-50% se afla notiuni importante.

Aceasta problema a educatiei este mai mult sau mai putin o problema generala si sunt putini cei care chiar incearca abordari diferite.

In general, eu nu consider scoala un sistem definitoriu de stabilire a cunostinelor, mai ales astazi, cand avem acces la un volum atat de mare de alternative.

Cand studentii termina scoala, ei nu au toate notiunile pentru a lucra efectiv in industrie, ceea ce nu este atat de anormal. Scoala trebuie sa ofere doar o baza generala. De exemplu, in invatamantul superior pot sa-mi amintesc cel putin 8-9 limbaje de programare invatate. Efectiv au fost mai multe, dar nu am tinut o evidenta detaliata. Este clar ca nu ai cum sa cunosti atatea limbaje de programare la nivelul la care sa produci. Pe de alta parte, ai o idee de abordare, care te poate ajuta sa stabilesti o directie in care vrei sa aprofundezi.

Aceasta este cheia, sa aprofundezi! Pentru asta fiecare are abordarea lui, aici poti sa-ti alegi singur calea, fie cursuri, carti, proiecte practice sau toate la un loc. Prin aprofundare ajungi la nivelul la care angajatorii nu doar te accepta, dar te vaneaza!

De multe ori, pasiunea inlocuieste total studiile. Am cunoscut mai multe persoane care, desi nu au studiat informatica, sunt acum profesionisti in ea.

Partea buna este ca multa lume aprofundeaza de placere si sfatuiesc pe oricine citeste aceste randuri sa caute placerea in ce fac. Aceasta este cea mai buna motivatie.

Educatie alternativa intr-o societate de consum

Pentru ca metoda traditionala de invatamant nu este tocmai suficienta, sa vorbim de cateva metodele alternative:

  • carti
  • cursuri
  • tutoriale
  • articole/bloguri

Carti
Cartile in mod traditional sunt cea mai buna sursa de informatii (cel putin pana la aparitia Internetului). Dar calitatea nu este garantata!

Acum 8-9 ani am incercat sa cumpar o carte pentru JavaScript. Selectia nu era foarte mare asa ca am incercat sa analizez fiecare carte in parte.

La final am fost dezamagit de alegerea facuta pentru ca in loc sa ma invete JavaScript, cartea ma invata cum sa fac efecte speciale pe pagini (foarte populare in perioada respectiva).

In cazul meu particular, am gasit raspunsul mult mai tarziu intr-o prezentare a lui Douglas Crockford. Acesta spunea ca majoritatea cartilor de JavaScript sunt de acest fel si a recomandat o singura carte in afara de cartea scrisa de el, JavaScript: The Definitive Guide.

Cauza este simpla, lumea este mult mai atrasa de carti care promit sa te invete un limbaj sau tehnologie intr-un numar limitat de lectii sau zile. Vrem totul acum, dar studiul are nevoie de timp, trebuie sa intelegi notiunile, nu doar sa le treci in revista intr-un mod rapid.

In general, ca sa determini calitatea unei carti ar trebui sa cauti review-uri. In ziua de astazi este foarte usor, eu prefer Amazon.com dar nu numai. Asa poti determina daca este ce cauti.

Uneori si o perspectiva rapida este utila, mai ales daca nu ai alt mod de abordare pentru subiect, dar in general orice subiect abordat rapid nu-ti ofera o perspectiva generala, ci doar o introducere usoara.

Cursuri

Sunt multe cursuri, atat in clasa cat si on-line. La fel ca si in cazul cartilor, este greu sa determini calitatea cursului.

Cursurile promit multe, dar de multe ori nu trateaza in detaliu subiectele, iar la final chiar daca ai impresia ca ai invatat multe, cand vine vorba de aplicat realizezi ca orice variatie de la materialele cursului te pune in dificultate.

Ca si in cazul cartilor, referintele sunt foarte importante! Din pacate pentru cursuri nu sunt la fel de multe ca pentru carti.

Incearca sa vezi subiectele abordate si detaliul de abordare. Sau uneori poti gasi mai repede referinte pentru profesor decat pentru curs.

Tutoriale

In special pe Internet sunt foarte multe tutoriale care promit sa te invete un domeniu, dar nu reusesc sa te invete cum sa realizezi exemplul lor. La final nu poti realiza decat mici variatiuni de la exemplul initial. De multe ori, cel care face tutorialul are cele mai bune intentii, dar este greu sa faci un transfer de informatii.

Pentru cele care sunt gratuite este foarte simplu sa determini daca abordarea este potrivita sau nu pentru nevoile privitorului. Incearca sa privesti cateva episoade si vezi daca la final ai inteles cum functioneaza componenta respectiva. Daca poti doar replica, atunci poate mai ai de cautat.

Partea buna este ca sunt foarte multe si ai de unde alege in general. De exemplu, la un limbaj de programare poti vedea in referinta oficiala cam ce ar trebui sa inveti, apoi in tutorial vezi daca ai inteles punctele din referinta si ai o idee ce fac.

La variantele comerciale este mult mai greu, pentru ca de multe ori ai doar un preview introductiv, insuficient pentru a-ti forma o parere. In aceste cazuri ar trebui sa cauti review-uri.

Bloguri si articole

Partea buna aici este ca investitia in timp este relativ mica. E simplu sa-ti formezi o parere la final.

Dezavantajul este ca unele articole nu se actualizeaza o data cu tehnologia. Trebuie sa te asiguri ca exemplele functioneaza pe versiunea folosita de tine. Din experienta proprie pot spune ca acest lucru este greu si necesita mult timp. De exemplu, unele articole care inca mai atrag cititori pe acest blog sunt scrise acum cativa ani si, daca nu mai folosesc tehnologiile respective, nu mai sunt tentat sa le tin la curent.

Cum sa invatam mai bine

Cauta referinte pentru materialele care presupun o investitie de timp si/sau bani: carti, cursuri sau tutoriale.

Atunci cand te hotarasti sa abordezi un subiect, incearca sa vezi ce materiale recomanda altii. Internetul este plin de materiale de diferite grade de dificultate.

Cand te simti stapan pe un subiect, testeaza-ti cunostintele. Construieste o aplicatie, urmareste subiectul pe platforme de Q/A sau, de ce nu, scrie un tutorial pentru altii. Intelegi mult mai bine un subiect cand il descrii altora.

Exerseaza! Este foarte important sa folosesti ce inveti sau vei uita mai repede decat crezi. Contribuie la proiecte open-source, incearca sa-ti faci proiecte personale sau incearca sa adaptezi proiectele altora la nevoile tale. Github este o unealta forte buna pentru a gasi si publica proiecte.

Este putin mai greu la inceput sa intelegi codul altuia, dar in industrie este imperativ ca sa poti colabora cu altii.

Invata lucruri noi tot timpul. Tehnologia se schimba, la fel cum se schimba si perspectiva asupra ei. De exemplu, AJAX a aparut la sfarsitul anilor “90, dar perspectiva asupra cum acesta se poate folosi s-a schimbat dramatic in anii urmatori, chiar daca tehnologia nu s-a schimbat mult timp. La fel a fost si cu JavaScript, desi a apatur la inceputul anilor “90,  abia dupa anii 2000 a inceput sa fie considerata o unealta utila, inainte era folosita in special pentru efecte speciale.

Mult timp, PHP a fost considerat un limbaj util doar pentru proiecte mici. Astazi, este limbajul preferat de giganti ai internetului cum ar fi Facebook si Yahoo!. O data cu popularitatea si abordarea asupra lui a fost schimbata pentru o performanta si scalabilitate mai buna.

Concluzie

Sistemul educational nu ofera performanta de care angajatorii au nevoie. Asta creeaza o discordanta intre asteptarilor angajatorilor si cele ale absolventilor, iar asta nu este doar o problema a informaticii.

Din pacate si materialele alternative uneori promit lucruri nerealiste, unii studiaza tehnologii si limbaje de programare luni de zile, iar altii promit rezultate dupa doar cateva zile sau chiar ore.

Din fericire, traim intr-o lume a informatiei si putem gasi nu doar materiale ci si pareri despre acestea.

Printr-o mai buna pregatire, sansele de angajare cresc considerabil, rezultand intr-o satisfactie mai mare de ambele parti.

Written by Claudiu Persoiu

17 December 2013 at 11:18 PM

Posted in Diverse

Exista viata si fara PHP6 – Retrospectiva 2012

with 3 comments

A mai trecut un an fara suport nativ de unicod in PHP. Da, nu a aparut inca PHP6, in caz ca cineva chiar se mai intreba asta…

In schimb, versiunea care a aparut este PHP 5.4. Cu aceasta versiune cred ca nu au fost adaugate decat lucruri de finete, nu mai e o schimbare asa de mare cum a fost in cazul PHP 5.3. In PHP 5.4, schimbarea majora o reprezinta traits si, favorita mea, noua varianta de closure.

Dupa cum anul trecut cuvintele cheie au fost Drupal si Magento, anul acesta cuvantul cheie a fost doar Magento.

Acum doua luni, mai mult fortat de imprejurari, am sustiunut examenul de certificare pentru Magento Plus. Pentru aceasta certificare, angajatorul meu, Optaros, a avut o influenta majora. Am fost mai mult sau mai putin obligat sa-l sustin si alaturi de asta a trebuit si sa facem parte dintr-un study group organizat de companie.

Nu am mai facut parte dintr-un study group din facultate si trebuie sa recunosc ca uitasem utilitatea lui. Cei care aveau mai multa experienta cu Magento (fata de mine care am putin mai mult de un an), au ajutat foarte mult la clarificarea unor probleme si la documentarea lor.

Dar mai multe despre asta intr-un alt blog, care va urma curand (sper)…

Oricum, dupa ce a trebuit sa studiez atat de in detaliu Magento, trebuie sa recunosc ca am mult mai mult respect pentru platforma. Dupa ce analizezi arhitectura din spate, incepi sa percepi altfel lucrurile. Arhitectura este foarte interesanta si destul de flexibila, lucru care te face sa treci cu vederea unele neajunsuri.

Acum ca a inceput un nou an, imi doresc sa public mai mult, cred ca in ultima perioada nu am fost foarte “productiv” cand vine vorba de publicat, fie ca este text sau cod.

Si anul acesta mi-am propus sa sustin cel putin un examen de certificare. Cum certificarea de Magento era in plan de abia pentru anul acesta, inca mai am optiuni pe lista.

Cam atat despre 2012 si planurile pentru 2013.

Va doresc un 2013 extraordinar!

Written by Claudiu Persoiu

14 January 2013 at 9:54 AM

Posted in Diverse,PHP

Tagged with , ,

Auto Text To Speech

without comments

Acesta este un mic proiect destinat utilizatorilor de Microsoft Windows!

Este un utilitar pentru Text To Speech scris in HTML si JavaScript. Aplicatia ruleaza ca HTML Application.

Am scris aceasta aplicatie de 3 ori pana acum, pentru ca am pierdut primele variante. Intr-un final m-am gandit ca poate si altii pot profita de pe urma lui.

Pentru utlizatorii Linux o alternativa este: eSpeak.

Mai multe detalii pe pagina proiectului.

Written by Claudiu Persoiu

31 July 2012 at 7:17 PM

Posted in Diverse,JavaScript

Tagged with , , ,

My pink elePHPant in the room

without comments

happy elePHPants

My elePHPants family!

Colectia mea de elePHPanti tocmai s-a dublat, acum sunt 2!

Am vrut si un elePHPant roz sa-i tina companie elePHPantului meu.

Si de data asta tot la eBay am apelat, o cautare scurta a mai gasit un crescator de elePHPanti, de data asta: Herman J. Radtke III. L-am comandat direct de pe site-ul lui de data asta, fara ebay, din simplu motiv ca pe ebay erau calculat gresit transportul.

Chiar si cu transportul corect, elePHPantul cel nou nu a fost tocmai ieftin:

$ RON
ElePHPant 16.16 55,51
Transport RO 16.95 58,23
Taxa posta (Vama) 0.6 1.95
Total: 33.71 115,69

O suma nu foarte mica, avand in vedere ca pretul unui elePHPant este de aproximativ 5 euro en-goss.

Acum am format o familie de elePHPanti fericita!

Written by Claudiu Persoiu

17 April 2012 at 10:01 PM

Posted in Diverse,PHP

Tagged with ,

A mai trecut un an iar PHP 6 ramane un mit – retrospectiva 2011

without comments

A devenit o traditie pentru mine sa incep retrospectiva anuala cu acest subiect.

PHP 6 este la fel de aproape de lansare cum era si anul precedent, sau acum doi ani, adica lipsit de perspectiva. In 2011, PHP 5.4 a ajuns la RC4 si probabil se va lansa in curand versiunea finala, lucru care inseamna ca inca nu se previzioneaza o data pentru lansarea PHP 6. Dar despre PHP 5.4 cu alta ocazie, este pe lista mea de “TODO” sa vad ce a ajuns in RC4.

Cum in PHP 5.3 cuvintele cheie pentru mine au fost namespaces, Anonymous functions, closures si garbage collector, in PHP 5.4 se pare ca aceste cuvinte cheie vor fi traits, din nou closures si scalar type hinting, alaturi de multe alte noutati.

Cand am scris primul meu blog anual despre PHP 6, lucram in principal la site-uri in romana, de acolo si dorinta mea pentru o versiune care sa suporte in mod nativ aceasta limba sau oricare alta fara nici o modificare. Pe atunci lucram in cea mai mare parte direct cu limbajul, de cele mai multe ori fara sa folosesc un framework . Dar de atunci a trecut mult timp si mutle lucruri s-au schimbat, acum folosesc aproape exclusiv framework-uri si platforme care m-au indepartat de limbaj oferindu-mi o noua perspectiva arhitecturala.

Dupa mai bine de un an in cadrul NCH, am decis ca este timpul pentru o schimbare. Si de data asta este vorba tot de o corporatie venita din state cu o sucursala in Romania. De data asta este vorba de Optaros. Desi nu intentionam sa-mi schimb locul de munca, am dat curs unei invitatii la interviu si pe scurt, am plecat. De mult simteam nevoia sa lucrez din nou pentru clienti externi, dupa experienta NCH unde toate proiectele erau interne, simteam nevoia de o schimbare.

Din nou proiectele sunt si mai mari, cu alte probleme de scalabilitate. Dar cred ca asta face web development-ul atat de interesant, cu cat ai probleme mai mari de scalabilitate, cu atat inseamna ca lucrezi la un proiect mai mare.

Anul trecut cuvintele cheie au fost Linux si Symfony framework. Pentru anul care tocmai s-a incheiat cuvintele cheie probabil au fost: Magento si Drupal.

Dupa o scurta perioada de lucru cu Magento, pot spune ca mi se pare incredibil cum o platforma atat de mare are atat de putina documentatie si de multe ori atat de multa inconsistenta. Este o plaforma foarte complexa cu care poti face foarte multe lucruri, dar cand vine vorba de documentatie, se pare ca abordarea se rezuma la a analiza core-ul. Venind din lumea Symfony, unde exista literalmente carti intregi de documentatie, puse la dispozitie in mod gratuit, mi se pare incredibil cat de putina si descentralizata documentatie este pentru Magento. Dar de asemenea este un subiect pentru un alt blog. Cred ca aici echipa Optaros m-a ajutat destul de mult ca sa inteleg cum sa abordez problemele.

Un alt eveniment important pentru mine acest anul trecut a fost Yahoo! Open Hack Day, eveniment tinut si in Romania in 2011. Nu stiu daca am mai vazut atata entuziasm si energie intr-un singur loc, intr-o singura zi. Pentru mine ca programator a fost o experienta de neuitat, unul din momentele care m-au facut sa-mi aduc aminte de ce am ales aceasta profesie.

In acest an am dat si examenul de certificare pentru PHP 5.3, chiar la inceptului anului. Examenul nu a fost atat de greu cum ma asteptam, desi se pare ca emotiile raman neschimbate. Faptul ca am mai sustinut un examen m-a ajutat mult, incredibil cat de multe lucruri iti aduci aminte cand le recitesti. Anul trecut mi-am propus sa sustin cel putin un examen de certificare pe an, deci trebuie sa incep pregatirile pentru urmatorul examen.

Concluzionand, 2011 a fost un an bun, plin de realizari si provocari, chiar daca nu am bifat foarte multe lucruri pe rezolutia de an, am realizat si multe lucruri care nu erau pe ea. Dar acum este timpul pentru o noua rezolutie de an.

Iar acum va urez un 2012 mai bun si mai plin de realizari! La multi ani!

Written by Claudiu Persoiu

3 January 2012 at 4:45 PM

Posted in Diverse

Tagged with , , , ,

Un nou joc JavaScript – Minesweeper

without comments

A venit vremea sa mai public inca un joc facut in JavaScript, de data asta este vorba de Minesweeper.

Prima versiune a jocului a fost facuta initial acum aproximativ un an jumatate, dar intre timp l-am rescris total din pricina problemelor de performanta.

Acesta este cred si ultimul joc care nu il fac folosind canvas din motive de compatibilitate.

Fata de majoritatea jocurilor care au fost facute literalmente peste week-end (exceptia este Puzzle Gd) acesta s-a dovedit un joc putin mai complicat.

Pentru grafica vreau sa ii multumesc (din nou) Cătălinei Radu.

Enjoy!

Written by Claudiu Persoiu

16 October 2011 at 9:47 AM

Posted in Diverse,JavaScript

Tagged with , ,

Internet Explorer, select tag si onload

without comments

Inca un motiv pentru care urasc Internet Explorer.

Toate browserele noi au tendinta sa faca cache la campurile de formular de pe o pagina. Pana aici nimic normal, usor enervant, dar nu anormal.

Se da urmatorul exemplu:

<select id="select">
 <option value=a>a</option>
 <option value=b>b</option>
 <option value=c>c</option>
</select>
<script>

var checkSelected = function () {
 var element = document.getElementById('select');
 alert(element[element.selectedIndex].value);
}

// ruleaza dupa onload
window.onload = checkSelected;

// ruleaza inainte de onload
checkSelected();

</script>

Se incarca pagina, se selecteaza a treia valoare si apoi se face refresh. Pentru ca nu s-a trimis nici un formular prima impresie este ca rezultatul va fi mereu “a”. Se pare ca nu este tocmai asa:

  • FireFox: c c
  • Google Chrome: a a
  • Internet Explorer: a c

Pot sa inteleg de ce FireFox a ales sa faca cache la valori chiar si daca nu se trimite formularul.

Pot sa inteleg si ca in cazul Google Chrome nu face cache la pagina daca nu s-a trimis formularul.

Dar ca Internet Explorer face cache si il incarca de abea dupa ce a incarcat toata pagina? Asta mi se pare confuz! Adica nu ai varianta sa nu folosesti onload? De ce? Nici macar nu am trimis formularul?

Testul a fost facut pe Internet Explorer 9 si compatibility view la versiunile 7 si 8.

Written by Claudiu Persoiu

9 October 2011 at 2:09 PM