Feedback loop

Posted in Regula 0 on December 7th, 2015 by Mihnea

O sa rup un pic tacerea aici ca sa va infrumusetez acest inceput de saptamina cu o noua isprava a tovarasului Ovidiu Cucu. In ultimul timp, vajnicul militian duce o lupta acerba cu botii de spam care au luat cu asalt ograda expertilor. Din pacate insa, cind iti petreci tineretea in comitetul disciplinar al unei uzine comuniste redactind autodenunturi, autocritici si compendii de reguli, iti distrugi iremediabil partea din centrul limbajului care ii ajuta pe oameni sa faca diferenta dintre un postac onest si unul cu intentii capitalist-antisociale.

In fapt: utilizatorul haleema, originar pare-se din Bistrita-Nasaud, cu fix un post la activ, lanseaza o intrebare: “Cum fac o aplicatie similara cu File Explorer-ul din Windows, care eventual sa aiba caracteristici noi ca de exemplu view-uri multiple, taburi, paneluri docabile etc.” Intrebarea zace fara raspuns vreme de 9 luni, pina o vede Ovidiu si o ia personal: Windows, multi-view, docking, MFC, FAQ! Daca nu el, atunci cine? Si unde mai pui ca are si raspunsul potrivit, caci intimplator a scris un articol pe blog despre asta, acum mai bine de un an?

haleema intreaba

 

Din pacate insa, imboldul raspundac pe care l-a simtit Ovidiu nu era izvorit doar din pasiunea pentru MFC. Familiaritatea cu subiectul merge mai adinc, deoarece cu vreo 4 luni inainte, Ovidiu insusi se intrebase pe sine, in aceeasi sectiune a site-ului: “Cum fac o aplicatie similara cu File Explorer-ul din Windows, care eventual sa aiba caracteristici noi ca de exemplu view-uri multiple, taburi, paneluri docabile etc.

cucu raspunde

Observati vreo similitudine? Sa fie haleema un bot care reproduce alte postari de pe forum, ca sa para ca spune ceva coerent, ca sa poata apoi sa bage un link la Viagra in semnatura, sau la homepage? Greu de spus. Nu e ca si cum ar mai exista exemple pe forum. Si in fond, Ovidiu are chiar un protejat care raspunde la intrebari pe care nu le intelege copiind chestii gasite pe internet, si despre el stim ca nu e un bot, nu?

Nea’ Ovidiu, daca auzi un tiuit puternic in urechi de citeva zile, nu-l baga in seama pe doctorul care-ti spune ca e tinitus. Se cheama feedback si e ca atunci cind pui un microfon linga boxa la care e conectat, doar ca la matale s-a inchis circuitul prin intermediul forumului.

Tags: , , , , , , , , , , , , , , ,

Campionatul national de tirnacop viteza

Posted in Codare cu premeditare, Premiul n00bel on May 11th, 2011 by jos8cal

Azi in Codexpertia a avut loc Campionatul National de Tirnacop Viteza. Bineinteles nu a lipsit de la eveniment multiplul medaliat la sol, Silviu Ardelean HD nominalizat acum la sectiunea “Eu propun”.

Cum nu de mult timp a devenit somer in JAVA, el a tinut sa explice motivele pentru care tirnacopul l-a ales pe el si nu invers. Medaliat la sectiunea Un Certain Retard pentru inovatia adusa metodei aflarii numarului de bytes dintr-un fisier, premiat la sectiunea Facepalm D’or cu simularea functiei atoi() in timp patrat, Silviu a deschis prelegerea cu problema numararii bitilor 1 dintr-un numar.

Cu Silviu in mina, tirnacopul s-a pus pe treaba. Dupa o lovitura bine aplicata lui Google s-a si intrezarit raspunsul la problema minerului in link-ul 2 (ca primul link l-a luat Marius Bancila care a si apucat sa ia cuvintul inaintea lui la dezbatere, futu-i). Asa ca a copiat repede codul prin metoda clasica a schimbarii numelor de variabile si si-a deschis prelegerea cu clasicul “Eu plagiezEu propun

Eu propun o varianta mai clasica.

int counter(int nr)
{
   int i = 0;  

   while (0 != nr)
   {
    i += (nr & 1);
    nr >>= 1;
   }  

  return i;
}

Desi este o metoda clasica, ea nu e functionala si tinem sa precizam ca operatorul >> a fost inventat intr-o perioada neo-nazista, de unde probabil si tenta mai nationalista de a opera cu numere pozitive.

Ceva amuzant s-a intimplat in pauza prelegerii. Cineva a pus o intrebare care l-a facut pe Silviu sa priveasca in jur, pentru a gasi pe cineva pe care sa-l aprobe. Intrebarea a fost asta:

Intrebarea este cum apelez functia sum fara sa modific clasa A.

class A
{
   private:
      A(){};
      ~A(){};

   public:
      int sum(int a, int b){return a + b;}
};

Primul care s-a aventurat a propus un:

#define private public

moment in care Silviu a simtit cum se scutura de certitudinile vietii. Nedorind sa creada ca aceste doua cuvinte, public si privat, nu sint de fapt magico-atomice asa cum a invatat el la Hidrocentrala pe vremea cind era pasionat de apa si peste, el a pus compilatorul capra si i-a virit acest #define pe git, sa vada daca si inghite, nu doar provoaca.

Ca dupa orice finalizare, oboseala incepe sa-si spuna cuvintul si uitind ca a lasat in cod acel #define, el ne propune rezolvarea:

O varianta mai curata dar nu imaculata:

class B : public A
{
public:
   B() {}
   ~B() {}

   int sumX(int a1, int b1) {
      return sum(a1,b1);
      }
};

int main()
{
   B z;
   z.sumX(2,3);
}

Deci daca vrei sa apelezi o metoda dintr-o clasa care nu poate fi instantiata, poti “propune” compilatorului sa-i dai o clasa derivata care sa apeleze metoda clasei de baza. Poate cineva de acolo din cartile pe care le citeste Silviu ne poate ajuta cu un

#pragma eupropun

in fata manevrelor de acest gen.

Mai mult decit atit, Silviu a declarat oficial ca a fost pacalit cind a propus rezolvarea sa, deoarece Zlatomir s-a grabit sa raspunda primul si a introdus subversiv in discutie acel #define private public obligindu-l efectiv sa-l aduca cu copy/paste in codul sau. Daca nu exista acest Butterfly Effect, codul lui Silviu era bun. De fapt stai, nu codul initial linie cu linie, ci codul pe care Silviu nu l-a scris dar l-a Gindit si din pacate un mirsav i-a ghicit gindul si i-a sugerat la noi pe site EXACT la ce s-a gindit el initial, dar nu a scris. Intelegeti voi.

PS. Multumim corespondentului Felics aflat in Codexpertia pe durata CNTV.

Tags: , , , , , , , , , , , ,

Cel mai iubit dintre Arhitecti

Posted in Regula 0, Stand-up philosophy on February 28th, 2011 by jos8cal

Asociatia pentru o lume mai buna a anuntat recent un master class la care pe post de Dumnezeu va fi un Dumnezeu care a pus umarul la inventarea cosorului pentru impletit cod. Educator si pedagog, el va fi pret de o saptamina ca un doctor care va sta la capatiiul arhitectului bolnav si va astepta pina acesta se va face bine, adica se va ridica pe picioarele lui!

Toti arhitectii vor merge acolo pentru reeducare! Adica sa invete o meserie din care sa se hraneasca pe sine si ulterior familiile lor. Cu ajutorul unui instrument ingenios, vor invata sa faca impreuna lucruri folositoare pentru oameni si pentru programatori in special. Caci meseria este bratara de aur! Si anume, vor invata sa impleteasca cod in general.

In ingeniozitatea lui, programatorul isi impleteste codul folosind briceagul, care ii permite mai apoi sa-si ievaluieze productivitatea la hectar de cod scris. Dar pentru asta, cineva s-a gindit cu capul lui sa vina in ajutorul programatorului si a inventat un instrument mai ingenios decit briceagul. Asa a aparut Cosorul.

Cosorul este format din doua parti: partea lemn-oasa si partea fer-oasa, iar pentru a invata sa-l minuiti corespunzator aveti nevoie de 2750 de euroi fara TVA. Spor la impletit!

Mai jos redam o bucata din editia precedenta a master class-ului care a avut loc la Slanic:

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Inflexible special tool that could fail.

Posted in Codare cu premeditare, Premiul n00bel, Stand-up philosophy on January 16th, 2011 by jos8cal

Nu cred ca-l cunoasteti pe mesajflaviu. El este un impatimit al jocului “La Perete, La perete, Stop!”. Jocul asta este pentru el ce a fost birna pentru Nadia Comaneci, adica o rampa de lansare. Antrenamentele si meciurile oficiale se desfasoara pe codexpert.ro.

Regula jocului este simpla: mesajflaviu sta cu spatele la Programare si se uita printr-o gaura aflata in peretele cu care pare ca se stie intim. Lumea din gaura este o lume fascinanta pe care mesajflaviu o urmareste hipnotizat, dar ca orice lume fascinanta, pare o utopie.

In spatele sau, la o distanta considerabila, stau in ordinea stelelor si diplomelor, Raspundacii. Aliniati precum negustorii de la sosea care vind ceapa sau echipament rustic pentru imobile, ei ofera Raspunsuri.

Mesajflaviu se intoarce confuz din cind in cind si intreaba multimea de experti despre semnificatia a ceea ce vede prin gaura. Rolul si misiunea raspundacilor este de a inlatura ceata din ochii lui si de a-i conferi o siguranta in privire si in ziua de miine. Cind unuia dintre raspundaci i se pare ca a atins un moment cairotic, creierul da startul unei stari de bine, stare care nu poate duce decit la lucruri marete. FAQ-ul este produsul acestei stari cairotice. Odata conceput, el este aplicat pe gaura cu menirea clara de a corecta vederea celui ce priveste prin ea.

Tematica intrebarilor este Programarea in general si viata de programator in particular. Intrebari precum “Pot trimite un string prin WM_CHAR“, “Cum pot trimite un CString prin PostMessage” sau “Cum se stocheaza o variabila membru tip custom?“, au tinut cu sufletul la gura firme si birouri intregi de programatori, toti in asteptarea raspunsurilor. S-au facut pariuri si s-a dat in bobi. Cum lesne se poate intui, marele pariu era pentru momentul aparitiei starii cairotice la vreun raspundac, adica momentul unui FAQ.

Si iata ca momentul cairotic l-a lovit pe Silviu Ardelean. Again.

Se poate schimba numarul versiunii de program automat, pentru cazul cand programul isi face update?” zice mesajflaviu fara sa-si dezlipeasca ochiul de la gaura. Neintelegind intrebarea, dar totusi in posesia unui raspuns care contine cuvintele “versionare” si “program“, Silviu pune tirnacopul jos si ia atitudine PROPUNIND de la sine citire o solutie la intrebarea pusa in joc. Vazind ca MVP Ovidiu Cucu n-a inteles nimic, dar totusi a ramas profund fascinat de raspuns, Silviului i se aprinde lampasul. Pune mina pe tirnacop si il arunca in departare. Unde-si va gasi tirnacopul hodina, acolo va pune Silviu de un FAQ. Sau cu cuvintele sale:

“Subiectul cred ca se preteaza unui FAQ si cu permisunea d-voastra il voi supune curand spre aprobare.”

Din pacate si Microsoft si-a aruncat tirnacopul acum 6 ani in aceeasi directie si au pus-o si ei de acelasi FAQ. Bineinteles ca asta nu este un motiv sa nu faca si Silviu unul in care sa nu mentioneze sursa si sa PROPUNA dinsul un workaround la o problema de mult apusa:

“Manually editing of binary files version in the resource editor of Visual Studio IDE is not a viable solution.”

“We can use a special tool that does this thing for us. ”

“Unfortunately this approach is not the most flexible and could fail.”

“In order to avoid this issue and edit the version only in a single place I propose the following workaround:”

Deci sa nu folositi NICIODATA un “special tool” pentru ca nu e flexibil si oricum nu o sa mearga. S-a auzit acolo in spate, da? Am sters si eu rusinea mea de tool scris in python care face asta in 8 linii de cod. Sa-mi fie rusine pentru inflexibilitate tool-ului si pentru abordarea sortita esecului.

Bine, daca este sa fim corecti, noi stim ca Silviu se mai inspira de pe net pentru a-si gasi cuvintele, dar niciodata nu ofera sursa. Acum ceva timp s-a inspirat cu copy/paste pentru a gasi rima cuvenita intr-o oda adresata XML-ului.

Tags: , , , , , , , , , , , , , , , ,

Filmoteca de aur

Posted in Premiul n00bel, Stand-up philosophy on November 12th, 2010 by jos8cal

Prin Octombrie 2009 RONUA a sarbatorit cincinalul. Dupa paranghelia de la Sacele, datul cepului si cununia cu Existenta au avut loc la Sinaia citeva zile mai tirziu, intr-un codecamp pe teme tehnice, tehnologice si tehnocratice.

Ce reusesc Gianni Morandi, Dan Spataru, Faramita Lambru sau Maria Lataretu pe gura si la instrument, Aurelian reuseste pe tastatura si la Paint. Afumat vizibil cu ceai chinezesc facut la temperatura camerei, dinsul s-a decis ca este timpul sa ia atitudine pentru siguranta job-ului tau. Si cum orice atitudine are nevoie de o baza ideologica solida (multumim colegului Nemesis pentru quote-uri, pentru ca din pacate manifestul original a fost sters s-a pierdut), a cerut un La minor si a deschis Paint-ul:

E toamnă. E început de an fiscal. E timpul lui Visual Studio 2010. Versiunea 4 de Framework. MVC-ul. Versiunea 2 de MVC. Și da… Silverlight 3!

Căștigă sute de ore-om în celelalte 360 de zile prin alocarea acestor 5.

La servici e imposibil să învăț chiar dacă folosesc resurse de instruire gratuite disponibile oricui!

Dacă aș privi programarea ca pe un sport, atunci acesta sigur e unul de echipă și un sport în care antrenorul face diferența…

Mai nou nu contează așa mult abilitățile tehnice, ci abilitățile de comunicare și de colaborare armonioasă într-o echipă

Ajutându-i pe alții dezinteresat, te ajuți și pe tine aproape automat fără vreun efort în plus.

De fapt mă poți observa cum învăț și în ce mod dobândesc abilități noi cu tehnologiile “sângerânde”.

Este ca și cum am învăța amândoi cot la cot stând la același birou.

De ce codul scris de tine se întoarce deseori de la testare sau de la client cu multe defecte de funcționare.

De ce mediul de dezvoltare (IDE) este mai important decât limbajul de programare, framework-ul sau tehnologia în sine…

Cum poți face ca orice aplicație pe care o scrii să se prezinte cu o interfață ergonomică cu un efort minim alocat acestui aspect în timpul construirii aplicației

Cum poți face task-uri evaluate în mod normal la 3-4 zile-om în sub 1 oră!

Cât ar valora pentru tine un proiect în care să fii vedeta, vip-ul echipei datorită noilor abilități dezvoltate?

Întreaga lui cunoaștere dobândită cu acest preț așteaptă să-ți fie revelată ție.

Dacă TU nu vii ți-o vor lua oricum alții înainte. Pot fi chiar unii dintre colegii tăi. Iar tu vei rămâne ne-codecamp-uit toamna asta.

Cere și ți se va da!

RONUA a organizat un concurs video in care pentru o reclama buna la adresa partidului cistigai un loc la acest Cenaclul Flacara al IT-ului romanesc. Din pacate n-am respectat la singe cerintele, drept pentru care am ramas ne-codecamp-uiti toamna trecuta. Mai jos filmul care mi-ar fi putut salva job-ul:

Tags: , , , , , , , , , , , , , , , , , , , , , ,