Perseverent pentru ca nu las probleme nerezolvate. Prin studiu intens si multa munca, am indeplinit cereri greu de realizat, avand si multa incredere in puterile proprii. Ador provocarile.
Organizat in aproape tot ceea ce fac, creand rutine pentru aproape orice. Gazduiesc & backup & monitorizez peste 130 de site-uri, si asta NU-mi ocupa tot timpul, dimpotriva. Folosesc scripturi, cron-uri, alerte si automatizari.
Orientat spre experienta utilizatorului in general. Deseori, dupa ce realizez un proiect, observ cum este folosit programul de catre client sau de catre diferite persoane care, fara sa stie, devin testeri iar procesul de testare este mascat in utilizare gratuita a acelui serviciu. Scopul final este de a crea interfete cat mai intuitive si usor de inteles de catre persoane atehnice pentru a reduce numarul de intrebari si a scurta trainingul.
Autodidact pentru ca am invatat programare, si inca invat, din nevoia de a rezolva anumite probleme si de a eficientiza procesele, din curiozitate si din dorinta de a vedea proiectele la care lucrez cat mai repede lansate. In prezent creez aplicatii in Delphi, PHP si Javascript, dar nu mi-e frica de nou.
De-a lungul timpului, am dezvoltat un CMS propriu, modular si optimizat pentru SEO si viteza, cu care am adus pe prima pagina in Google zeci de site-uri din diferite domenii de activitate. Cea mai recenta versiune a acestui CMS este bazata pe Yii2 Laravel in back-end si Angularjs React pentru Admin Area.
Am inceput sa programez inca din anul 1998, din scoala generala, pe un calculator vechi HC90, pe care l-am cumparat de la un prieten contra cateva beri (nu e ceea ce crezi, la 14 ani foloseam berea ca moneda de schimb).
In 2004 am facut cunostinta cu microcontroller-ele (in cadrul unui proiect despre care iti voi povesti doar daca ne vom cunoaste) si am inceput programare in assembler la inceput. Dupa cateva proiecte in assembler, pline de bug-uri dar foarte eficiente ca memory footprint, am descoperit Proton Pic Basic pentru microcontrolere, care semana oarecum cu ceea ce stiam deja.
Apoi am descoperit Visual Basic 6 in care am creat cateva aplicatii mai mult in scop autodidactic: gestiune oferte imobiliare, file sharing (o noua metoda la acea vreme) cu server intermediar, program de rate (pentru firma la care lucram), installer-e, backup arhivare&upload, boti de Mirc si Yahoo Messgenger si program de contabilitate primara nefinalizat.
Tot atunci am creat si un joc online bazat pe browser care necesita un server pe Windows si consta intr-un program scris in VB6 pe post de server HTTP ce genera paginile HTML. Jocul a functionat initial pe domeniu footballmania.net , mai tarziu l-am rescris in PHP si mutat pe gogoal.org. In prezent jocul este retras din online si trecut in stand-by din lipsa de timp.
HTML si CSS am invatat, pentru ca mi-a trebuit pentru jocul manager de fotbal, folosind un editor cu autocomplete.
In 2007 am obtinut primul job de programator. Incepand cu acest moment, am practicat programare intensiva in aproape fiecare zi.
Primul site propriu-zis, un portal de divertisment, a fost scris integral in PHP, iar navigarea in site am ales sa o fac cu AJAX. Nestiind de jQuery la acea vreme, a trebuit sa-mi creez propriile functii de AJAX cat si niste librarii in Javascript.
Apoi, pe langa site-uri obisnuite, in perioada 2007-2011 am creat aplicatii complexe in cadrul firmei de webdesign la care lucram:
Pana in 2009, am pus bazele qEngine alpha, un framework propriu dezvoltat in urma cererii de functionalitati din partea clientilor cat si a nevoii de a refolosi nucleul unei aplicatii online. La inceput nu l-am numit nicicum, pentru ca nu exista ca si produs distinct, ci doar o colectie de functii si librarii.
Desi eram hotarat sa creez si un framework Javascript, la sugestia unui prieten, am incercat jQuery, care facea tot ce aveam nevoie cat si multe lucruri despre care nici nu stiam ca imi trebuie.
In 2010 am definitivat qEngine v1, un framework PHP, extensibil prin module, ce suporta teme, traducere site in mai multe limbi si interfata de administrare built-in. Pentru acest framework am scris ~40 de module de: e-commerce, blog, anunturi, galerii foto/video, cataloage, imobiliare, administrare utilizatori, etc.
Incepand cu 2011, am facut un pas important in drumul de programator si am decis ca pot realiza mai multe pe cont propriu. Asa ca am inceput sa lucrez ca "self employed", avand direct clienti si proiecte din Constanta la inceput, apoi din Romania, proiecte prin colaboratori, si cateva proiecte castigate pe portalurile de freelancing.
In anul 2012 am definitivat qEngine v2, o varianta mult imbunatatita si optimizata a qEngine v1. In plus am introdus Smarty ca template engine, sistem de caching avansat si Twitter Bootstrap pentru teme responsive. Tot atunci, am abandonat librariile proprii de Javascript si am adoptat jQuery ca framework Javascript prezent permanent in qEngine. Pentru qEngine v2 am creat peste 20 de module: e-commerce, blog, anunturi, galerii foto/video, cataloage, imobiliare, administrare utilizatori, etc.
In aceasta perioada am inceput sa invat administrare sisteme Linux, pentru ca trebuit sa trec de la hosting Shared la server propriu, datorita cererii crescande de resurse necesare proiectelor. Am testat foarte multe aplicatii de administrat webhosting precum: Cpanel, Kloxo, Virtualmin, Zpanel, etc. Concluzia finala a fost un sistem LNAMP (Linux Nginx Apache Mysql PHP) bazat pe Vesta CP, care vine configurat la pachet cu Apache pentru compatibilitate si Nginx ca reverse proxy si livrare de continut static. Pe aceasta platforma am implementat si diferite API-uri de: whois, HTML2PDF, image resize, retea CDN cu load balancing catre alte servere dedicate stocarii, ip rotation pentru trimitere de mailuri, etc.
Pe la sfarsitul 2014 am incercat sa scriu qEngine v3 bazat pe Yii1, proiect pe care l-am abandonat pentru la scurta vreme se lansase Yii2.
La inceputul 2015 am inceput lucrul la qEngine v4, bazat pe Yii2. qEngine a devenit iqApp, si foloseste cele mai noi tehnologii web:
iqApp v4 este la inceput, in prezent, pe el este creata partea de "client area" a platformei cloudpro.ro , cat si acest site. Este creat avand in minte urmatoarele: user-friendly, caching intensive, multi-language, multi-currency cat si "write once, run anywhere" prin folosirea Angularjs.
Inca din 2014 am inceput lucrul la un program de facturare in Delphi, varianta anterioara a programului fiind scrisa in VB6. In ciuda limbajului oarecum invechit comparativ cu C# sau .NET de ex., am apreciat avantajele practice ale solutiilor Delphi:
Tot in 2015, pe cand lucram la un proiect in Delphi de productie si gestiune stocuri. La cererea clientului, a trebuit sa modific interfata implicita a aplicatiei creata in Delphi conform unei teme alese din mai multe trimise ca propunere. Problema a fost ca tema era scrisa in HTML+Bootstrap, dar aplicatia trebuia sa ramana instalabila pe calculatorul clientului. Asa ca am folosit Chromium (motorul din spatele Google Chrome) pentru a ma asigura ca grafica programului se vede identic pe orice calculator, indiferent de versiunea Internet Explorer, exe-ul compilat in Delphi ca si controller, si SQLite pentru baza de date. Exista deja electronjs... dar era prea nou si nepopular pentru a-i da atentie. 2 ani mai tarziu...
Si asa, din aproape in aproape, de la assembler am ajuns sa creez aplicatii de tip "write once, run anywhere" (WORA) inclusiv browser-based cu framework-ul iqApp, care a ajuns sa fie mult mai usor de intretinut datorita comunitatilor active ce sustin diferitele proiecte Open Source pe care se bazeaza iqApp.
In 2017...
In 2018...
In 2019 ... 2022 ... 2023 ... 2024 ...
...va urma...
De-a lungul timpului, am comis destul de multe greseli in programare care au rezultat in blocarea dezvoltarii proiectului si necesitatea rescrierii. Si tehnologia web era inca nematurizata, multe solutii erau implementate in stil propriu din lipsa de standardizare (Wordpress, Joomla, Drupal, etc). Din greseli am invatat multe principii de programare: DRY, KISS, YAGNI, "premature optimisation", "code coupling", etc.
Primul hack a fost un cap de drac pe site-ul clientului. Atunci am inteles cat de serios trebuie tratata securitatea pe web si ca niciodata nu trebuie avuta incredere in datele provenite de la utilizatori. Validari pe parte de server si "sanitize" sunt pe lista obiceiurilor frecvente. Al doilea hack a fost steagul hacker-ilor algerieni si a fost din cauza softului prost configurat de pe server (de fapt tot din cauza mea) cand am trecut la VPS. Al treilea nu a mai existat.
Backup incremental pentru fisiere si total al bazelor de date sunt pe lista de task-uri zilnice automatizate. Am "creat" multe site-uri in Wordpress si m-au albit in cap vulnerabilitatile ce veneau la pachet cu plugin-urile dar si unele teme. Pe unele le-am rezolvat cu țigănii gen chmod sau chown.