-
Nu te lasa pacalit, aceasta postare chiar este despre programare, arhitectura sistemelor, dar si despre un sistem de incalzire.
Daca nu-ti dai seama cum poti vorbi despre programare fara sa folosesti programare, atunci ar trebui sa citesti cartea “The Passionate Programmer” de Chad Fowler, este o carte foarte buna. Povestirile legate de jazz din acea carte m-au inspirat sa scriu aceasta postare.
Povestea incepe intr-un apartament nou dintr-o cladire veche. Sau cel putin, e nou pentru mine.
Cladirea are o centrala proprie, foarte veche si extrem de ineficienta. Dupa o lunga analiza, am decis sa-mi instalez propria centrala de apartament si sa ma deconectez de la sistemul de incalzire al cladirii.
Pana aici nimic deosebit, multa lume face asta, parte pentru confort, parte pentru optimizarea cheltuielilor.
Acestea fiind spuse, aveam un proiect si aveam nevoie de un dev. Sau, cu alte cuvinte, aveam un sistem de incalzire de facut si aveam nevoie de cineva care sa-l construiasca.
Am intrebat in jur de un dev “bun”.
Ca in orice alt domeniu, sunt multi oameni care vin cu solutii proaste. Sunt unii care fac oferte foarte bune, dar nu sunt capabili sa termine lucrarea, sau scriu cod urat care nu este scalabil, sau, si mai rau, imposibil de mentinut.
Avand in vedere ca tot ce stiu despre centrale si sisteme de incalzire este cam ce stie oricine dupa ce a cautat subiectul pe google pentru aproximativ doua ore, am vrut pe cineva in care sa am incredere, asa ca am cautat dev-ul pasionat!
Am avut cateva recomandari. Primul mi-a spus ca trebuie sa-mi pun tevile aproape de travan. Dupa ce l-am convins ca nu vreau ca apartamentul meu sa arate ca o fabrica plina de tevi mi-a spus ca in mod sigur trebuie sa inlocuiasca (cel putin) un calorifer pentru ca nu poate trage o teava prin spatele lui. Aproape ca puteam sa-mi bag toata palma in spatele caloriferului asa ca am concluzionat ca cel care vine trebuie sa fie capabil sa treaca testul de a trage o teava prin spatele caloriferului.
Era evident ca nu era un dev bun. Un bun dev trebuie sa poata lucra cu cerintele, un proiect trebuie sa respecte cat mai multe din cerintele clientului, iar daca nu poate atunci sunt cateva explicatii: nu poate pentru ca nu stie cum sau nu vrea pentru ca stie ca este greu si nu vrea sa se complice. In unele cazuri asta nu este o tragedie, poate este mai ieftin si mai rapid, iar in cazul lui ar fi fost. Din pacate pentru el, eu eram interesat de calitate.
Si apoi a aparut programatorul pasionat. Nu a spus la niciun moment ca este ceva ce nu poate face, era mereu vorba doar de un cost si, poate, de o consecinta. Can lucrezi cu un dev mai, totul legat de ei e mai scump, nu doar munca lor: vor vrea servere mai bune, unelte mai bune si uneori mai mult timp pentru lucruri precum testare si mententanta. Cu alte cuvinte, uneori pretul este mai mare, nu doar pe loc, ci si pe termen lung. Un proiect de calitate necesita timp si bani.
Acesta este rezultatul proiectului meu:
In caz ca nu ai mai vazut un sistem de incalzire pentru un apartament, poate ar trebui sa stii ca, in afara de tevi, nimic altceva nu este neaparat necesar.
Este doar pasiune!
De exemplu: pompa din dreapta jos, este acolo doar ca sa forteze apa sa se miste mai repede prin instalatie. Gandeste-te la ceva de tipul Redis, care va avea un efect benefic asupra sistemului, dar majoritatea sistemelor vor lucra foarte bine fara el. Evident, la un moment dat ar putea chiar avea nevoie de mententanta sau poate creea si probleme, ca aceasta problema din Magento 2: https://github.com/magento/magento2/issues/10002. Orice sistem vine cu pretul lui.
Vasul de expansiune din stanga jos nu era necesar (in sensul in care centrala are deja unul integrat), dar nu este o idee rea sa ai unul in plus. Este ca si cum ai resurse suplimentare (spatiu de stocare suplimentar, ram sau CPU) pe care nu le folosesti, de fapt, in mod constant. Un server nu ar trebui in general sa depaseasca un anumit load, acela este vasul de expansiune al serverului pe care trebuie sa-l iei in considerare.
Filtrul de apa este ca un firewall, ai nevoie de el, este protectia ta, poate marea majoritate a timplui va fi inutil, dar atunci cand vei avea probleme pe instalatie iti va parea bine ca il ai, pentru ca el le va filtra.
Partea buna cu un dev pasionat este ca si alti devi ii inteleg si ii apreciaza munca. Asta este foarte important, indiferent de industria “dev-ului”.
Singurul care a avut ceva de comentat a fost tehnicianul care facea ISCIR-ul. Puteai sa-ti dai seama foarte usor ca nu e pasionat, a vrut sa spuna ceva de rau doar ca sa ma impresioneze pe mine cu expertiza lui.
Din pacate pentru el, a facut niste comentarii foarte ridicole dupa care mi-a facut o oferta de mentenanta. El era consultantul, nu a facut proiectul si nu a vrut sa munceasca la el, dar in mod sigur vrea sa faca un ban din el fara sa depuna niciun fel de efort.
Cred ca o concluzie este ca intre developeri, calitatea si pasiunea transcend industria.
-
Acum mai bine de un an de zile am scris un blog, in care ziceam ca Google nu stie unde stau.
Problema era ca Goole Maps avea o acoperire deosebit de proasta pentru Romania, iar Yahoo! Maps este o alternative mult mai buna pentru aceasta parte a europei. Inca mai cred ca Yahoo! Maps este o alternativa mult mai buna dar am fost surprins totusi de un lucru. In decursul tipului am tot intrat pe Google Maps pentru ca sa vad cum mai sta acoperirea pe Bucuresti, practic era o singura cale reprezentata pentru a ajunge de la autostrada A1 la A2 si nimic mai mult.
Acum aproximativ o luna, am intrat din nou pentru ca trebuia sa construiesc o aplicatie de turism in Romania si… surpriza, surprize, chiar daca pozele din satelit sunt de calitate mai proasta acum, am putut nu doar sa gasesc folosind cautarea strada pe care stau dar si blocul. Mai mult de atat, am putut calcula trasee alternative catre diverse locatii din Bucuresti.
Se pare ca Google a inceput sa aiba ceva mai mult interes pentru aceasta zona din centru Europei, acum permitand formarea unei concurente reale cu Yahoo!. Asta este un foarte mare avantaj pentru cei care au telefoane cu Android si folosesc Google Maps ca aplicatie de GPS. Acum cativa ani, sa folosesti Google Maps in Romania era complet inutil, puteai sa vezi intradevar imaginile din satelit, dar cam atat, nu puteai sa gasesti adrese utile, iar daca erau cumva marcate pe harta nu puteai sa calculezi un traseu catre acestea.
Pana la urma aplicatia am rezlizat-o folosind Google Maps, desi inca sunt de parere ca Yahoo! Maps este o foarte buna alternativa, atat de punctul de vedere al calitatii cat si ca API. Si ca tot vine vorba de API, ambele mi se par ok si nu cred ca acest criteriu este unul de diferentiere intre cei doi giganti.
O chestie putin socanta totusi legata de Google stie unde stau a fost intr-o seara cand curios sa vad daca GPS-ul de pe telefonul meu functioneaza am iesit pe balcon. Totul a fost ok, m-a gasit cu o aproximatie intre 50 si 100m pe harta Google folosind conexiunea mea de wireless pentru transferul de date. Intr-o alta seara un prieten a venit la mine si am incercat acelasi lucru, tot pe aceeasi conexiune de internet, acelasi program Google Maps, cu o apximatie constanta de 100m.
Teoretic nimic anormal, totul a devenit bizar cand a doua zi am aflat ca de fapt telefonul lui nu are GPS, deci ce vedeam noi era ultima conecare de la dispozitivul meu… deci Google chiar stie unde stau… la propriu…
-
Asteptam de ceva vreme video-ul acesta si intr-un final a aparut.
Douglas Crockford este una dintre cele mai importante persoane in comunitatea JavaScript. Modul in care pointeaza toate problemele legate de JavaScript mi se pare genial, parca te tine in tensiune pana la final sa vezi care sunt si partile bune.
-
Toata lumea tanjeste dupa PR de la Google, dar cum sa faci sa nu dai PR fara rost?
Aceasta problema este foarte comuna, incepand de la site-uri de prezentare pana la blog-uri si forumuri. Sau mai exista si cazuri speciale cand preferi sa nu se indexeze anumite link-uri, cum ar fi link-urile care tin locul formularelor de tip GET.
Raspunsul este foarte simplu! Argumentul rel=”nofallow”. Sa luam un exemplu:
1<a href="http://www.claudiupersoiu.ro">Claudiu Persoiu</a>
Cam asa arata un link normal, acum nu mai trebuie adaugat decat rel=”nofallow”:
1<a href="http://www.claudiupersoiu.ro" rel="nofallow">Claudiu Persoiu</a>
Hmmm… ce mai trebuie? Nimic! Practic cu acest mic argument s-a rezolvat problema.
De multe ori pentru site-uri externe se marchiaza cu “external nofollow”, practic rezultatul este similar. In acest mod sunt marcate si link-urile de la comentarii de la acest blog.
-
Arhicunoscutul site trafic.ro a devenit de curand serviciu pe bani, mai exact 10 euro fara TVA pe an.
Eu personal pentru acest blog folosesc google analytics, deci nu e ca si cum ma afecteaza pe mine dar undeva in sinea mea chiar imi pare rau. Era un mod foarte bun de a aflat date care altfel sunt condifentiale despre concurenta, era o unealta foarte buna si pe care multi o lasa complet neprotejata. Cu ajutorul trafic.ro poti vedea cuvinte cheie, surse de trafic si multe alte date foarte interesante din punct de vedere SEO. De asemenea cu acest serviciu puteai vedea cat de “sanatos” este traficul prin numarul de utilizatori care frecventeaza un anume site si cam ce rata de intoarcere au. Cu toate aceste date puteai sa faci un raport interesant chiar daca de multe ori si minimalist despre cum sa furi clientii unui site.
Dar toate acestea urmeaza sa se schimbe, o noua era in SEO din Romania se schiteaza.